public static void main(String[] args) {
short s2 = 1;
s2 = s2 +1;
short s1 = 1;
s1+= 1;
System.out.println(s1);
}
为什么 s2 = s2+1报错
而 s1+=1就不报错呢?
short s2 = 1;
s2 = s2 +1;
short s1 = 1;
s1+= 1;
System.out.println(s1);
}
为什么 s2 = s2+1报错
而 s1+=1就不报错呢?
s2 = s2 +1;//你这是一个短整型和一个整型运算,肯定会报错。
short s1 = 1;
s1+= 1;//这种写法,强制把1转换成short类型了,当然不会报错了。
s2是short类型的,short是不等于int的所以会报错,你 改成s2 = (short)s2+1就好了 而s1+=1不报错的原因是他和s2+1的处理机制不一样,java会对他自动进行处理
你换成short s2=s1+(short)1;试试!
s1 += 1; ---> s1 = (short)(s1 + 1);short在于int相加的时候会自动升级到int的
因为1是int型,s2是short,
但是s2发现,呦我要和这个int搞基,我得变身。
它一变转成了int型的s2
所以 s2=(int)s2+1;还需要变身s2=(short)((int)s2+1);
强调一下,s2本来就是short类型,不过因为运算把
运算右边搞成int型,所以还需要转换回short型。
{
public static void main(String[] args)
{
short s2 = 1;
s2=(short)((int)s2+1);
short s1 = 1;
s1+= 1;
System.out.println(s1);
System.out.println(s2);
}
}这样就行了 ,
其实还有个比较大的区别 大家都没说出来;那就是 s2+=1 比 s2 = s2 + 1 要耗性能。 为什么,你可以百度。
赶快 结贴吧~