short x=97;
short y=2;
x=x+y; 这行为什么就错误呢?说是等号右边的数值为int型,而等号左边是short型,从而引起错误。
但是 x和y 都是short类型的,x+y怎么就变成int类型的了呢?
11 个解决方案
#1
JAVA中使用两个数值进行二元操作时,比如:x+y
先要将两个操作数转换为同一种类型,然后再进行计算
* 如果其中有一个为double类型,另一个转为double.
* 否则,如果其中一个为float,另一个转为float.
* 否则,如果其中一个为long,另一个转为long.
* 否则,两个操作数都转为int.
先要将两个操作数转换为同一种类型,然后再进行计算
* 如果其中有一个为double类型,另一个转为double.
* 否则,如果其中一个为float,另一个转为float.
* 否则,如果其中一个为long,另一个转为long.
* 否则,两个操作数都转为int.
#2
short 在参与计算时首先会转化成int类型,看来的强制转换了。
#3
+1
#4
byte,short,char在程序执行的时候 自动先转换成int类型,
当要将x+y赋值给short类型的x时,要加上强制转换如 x=(short)(x+y)
当要将x+y赋值给short类型的x时,要加上强制转换如 x=(short)(x+y)
#5
short byte char 在执行的时候 会自动转换成整形也就是int类型 所以这样错误 可以改成x=(short)(x+y)这样就对了 还有如果x+=1就是正确的
public class Test6 {
/**
* @param args
*/
public static void main(String[] args) {
short a = 8;
a = a+8; //错误 也改改成a = (short)a+8;
a+=8; //正确
}
}
#6
二次操作时候会转换类型
#7
#8
+1
#9
+1
#10
byte short char会自动提升到int~所以右边运算式的结果实质上是int型,而左边是short类型大小不匹配必然会报错。只需要写成x=(short)(x+y) 或者 x += y即可。(一般推荐使用后者,第一这种方法效率更高,第二无需手动强制转换)。望采纳~
#11
+1
#1
JAVA中使用两个数值进行二元操作时,比如:x+y
先要将两个操作数转换为同一种类型,然后再进行计算
* 如果其中有一个为double类型,另一个转为double.
* 否则,如果其中一个为float,另一个转为float.
* 否则,如果其中一个为long,另一个转为long.
* 否则,两个操作数都转为int.
先要将两个操作数转换为同一种类型,然后再进行计算
* 如果其中有一个为double类型,另一个转为double.
* 否则,如果其中一个为float,另一个转为float.
* 否则,如果其中一个为long,另一个转为long.
* 否则,两个操作数都转为int.
#2
short 在参与计算时首先会转化成int类型,看来的强制转换了。
#3
+1
#4
byte,short,char在程序执行的时候 自动先转换成int类型,
当要将x+y赋值给short类型的x时,要加上强制转换如 x=(short)(x+y)
当要将x+y赋值给short类型的x时,要加上强制转换如 x=(short)(x+y)
#5
short byte char 在执行的时候 会自动转换成整形也就是int类型 所以这样错误 可以改成x=(short)(x+y)这样就对了 还有如果x+=1就是正确的
public class Test6 {
/**
* @param args
*/
public static void main(String[] args) {
short a = 8;
a = a+8; //错误 也改改成a = (short)a+8;
a+=8; //正确
}
}
#6
二次操作时候会转换类型
#7
#8
+1
#9
+1
#10
byte short char会自动提升到int~所以右边运算式的结果实质上是int型,而左边是short类型大小不匹配必然会报错。只需要写成x=(short)(x+y) 或者 x += y即可。(一般推荐使用后者,第一这种方法效率更高,第二无需手动强制转换)。望采纳~
#11
+1