Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将int添加到short_Java - Fatal编程技术网

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的+运算符上。