将 int 添加到 short 中

17 浏览
0 Comments

将 int 添加到 short 中

这个问题已经有了答案

Java的+=、-=、*=、/=合成赋值操作符为什么不需要转换?

我的同事向我提出了这个问题,让我有点困惑。

int i = 123456;
short x = 12;

这个语句

x += i;

能够编译通过,然而

x = x + i;

却不能。

Java在这里做了什么?

admin 更改状态以发布 2023年5月23日
0
0 Comments

整数类型(int、short、char和byte)的+运算符始终返回一个int作为结果。

你可以看到这个代码:

//char x = 0;
//short x = 0;
//byte x = 0;
int x = 0;
x = x + x;

除非xint,否则它不会编译。

0
0 Comments

int i = 123456;
short x = 12;
x += i;

实际上是

int i = 123456;
short x = 12;
x = (short)(x + i);

x = x + i只是x = x + i。它不会自动转换为short类型,因此会导致错误(x + i的类型是int)。


形式为E1 op= E2的复合赋值表达式等价于E1 = (T)((E1) op (E2)),其中TE1的类型,除了只对E1求值一次外。

- JLS §15.26.2

0