Java 将int添加到short
我的一位同事问我这个问题,我有点困惑Java 将int添加到short,java,Java,我的一位同事问我这个问题,我有点困惑 int i = 123456; short x = 12; 声明 x += i; 不过编译得很好 x = x + i; 没有 Java在这里做什么 数字被视为int,除非您特别强制转换它们。因此,在第二条语句中,当您使用文字数字而不是变量时,它不会自动将其转换为适当的类型 x = x + (short)1; …应该有效 int i = 123456; short x = 12; x += i; 实际上是 int i = 123456; short
int i = 123456;
short x = 12;
声明
x += i;
不过编译得很好
x = x + i;
没有
Java在这里做什么 数字被视为
int
,除非您特别强制转换它们。因此,在第二条语句中,当您使用文字数字而不是变量时,它不会自动将其转换为适当的类型
x = x + (short)1;
…应该有效
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))
,其中T
是E1
的类型,除了E1
仅计算一次之外
-
整数类型(int、short、char和byte)的
+
运算符始终返回int作为结果
您可以通过以下代码看到:
//char x = 0;
//short x = 0;
//byte x = 0;
int x = 0;
x = x + x;
除非
x
是一个int
但您正试图将int添加到short中,否则它不会编译。a=b!=b=a你实际上是在给兴趣的缩写添加一个int,试试这个char ch='0';ch*=1.2代码>现在ch是'8'
;)我写错方程式了。我更新了我的问题。查看它的x=x+i
。好的,那么为什么x=x+x;工作问题不在数字1上,而是在返回int的+运算符上。