public class ShortDemo {
public static void main(String args[]){
short s1=1;
s1=s1+1;//为什么报错,应怎样改正
}
}
谢谢
------解决方案--------------------
错误原因为 遗失精度 那就不要用short定义了 用int定义不就好了
------解决方案--------------------
s1=(short)(s1+1)
s1+=1
------解决方案--------------------
右上浅蓝色条框的“管理”
------解决方案--------------------
java里看到整数默认认为是int型
s1=s1+1就相当于 一个short + 一个int ,结果为int,但你付给的是short,所以要加强制转换,将int转换成short
------解决方案--------------------
Java默认整型是int,如果要用short的话可以使用强制类型转换,或者使用1s。short s = 1s;
------解决方案--------------------
同上,小范围到大范围的转换是自动转换,而大范围到小范围的转换是要强制转换的.
------解决方案--------------------
s1 = s1+1;从右向左执行,s1是short型,1是整形,所以s1+1需要把s1转型为int,得到的和也是int型,int型数据赋值给short型,编译错,所以,需要强制类型转换,s1 = (shot)(s1+1);
------解决方案--------------------
s1=(short)(s1+1)
------解决方案--------------------
强制转换
s1=(short)(s1+1)