java: short s=1; s=s+1 不能通过编译,而s+=1 可以,为什么了??

short s=100.2; 不能通过编译,而 s+=100000.225却可以?

java: short s=1; s=(short)s+1 ,强制转换一下,因为1是int型,加上s后就变成int型了!把低的转化成高的.,所以s+1是int型!但是你定义的s是short ,所以要强制转换!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-27
s是short类型,1是int类型,short和int相加就不行啊,需要强制转换啊,但是s+=1,这是说s加了1之后才进行转换,就像数学中,1.1+1,不就是等于2.1吗?
short对于小数点需要有强转的啊,就像double a = 2.1也会不能通过编译的,s+=100.223就像上面说的,是相加之后就转换了,所以可以通过..
第2个回答  推荐于2017-09-05
java的自动转型是从小到大,而100.2是一个int型的数,不会自动转成short类型的,而后者却会自动转。赋值运算的优先级最低,而+=的优先级就不一样了。追问

明白了!谢谢了!小弟 还有一个问题想问 一下,
Integer o1=new Integer(10); //line1
Integer o2=o1; //line2
o1=null; //line3
o2=new Integer(10); //line4
o2=null; //line5
为什么 在第一行创建的Integer对象是在 line4 的时候结束生命周期?

追答

至于生命周期的问题,你可以去找一下相关的资料看。我觉得这时没有结束,你不信可以在第五行后面用一个o1。

本回答被提问者采纳
相似回答
大家正在搜