java,s+=1?

来源:百度知道 编辑:UC知道 时间:2024/05/23 14:19:28
short s=1;
s=s+1;错误,s+=1;为什么正确?

类型转换问题嘛,s是short型,s+1是short+int,java会自动将类型提升变换为int+int,所以得到的结果还是int,是无法将short=int+int的,需要做一个类型强制转换,s=(short)(s+1).
s+=1的意思不能跟上面那样理解,它表示的就是每次自增1,就好像s++,++s一样,无非这里指定了你每次自增的值是多少,你也可以写成s+=2,s+=3都可以的

1、 short s=s+1
会出现编译错误。s+1的时候,结果会被“升格”为int类型。把int赋给short当然编译错误。

2、 s+=1
对于“+=”操作,系统会自动执行类型转换操作,等价于s=(short)s+1。

3、java的自动转型是从小到大,而100.2是一个int型的数,不会自动转成short类型的,而后者却会自动转。赋值运算的优先级最低,而+=的优先级就不一样了。

s=s+1是一个加法运算,里面的1是一个int,运算结果int不能对short变量赋值。
s+=1是一个增值运算,没有把计算结果并对变量赋值的步骤,所以正确。

按照书上理论来讲

这两个表达式都是正确的

s+= 即 s=s+