short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)-----------------------------
第一个有问题,第二个没问题,是什么机制导致这个区别? 我翻了一下thinking in java,没找到相关的内容
short s1 = 1; s1 += 1;(可以正确编译)-----------------------------
第一个有问题,第二个没问题,是什么机制导致这个区别? 我翻了一下thinking in java,没找到相关的内容
short s1 = 1; s1 += 1;(可以正确编译) s1+1;在JVM里,因为1常量是int型的,而s1是short型,JVM转换类型只能由小范围转到打范围(如把short转成int,float转成double),所以在计算的时候把s1当成int计算了,然后就是一个赋值操作,返回当然就是int型了s1 += 1;这个不是赋值操作,只是纯粹的吧s1加1的过程!纯碎是个人理解的看法,至于正确的解释,看来还需要继续翻阅资料
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为
(byte,short,char)--int--long--float--double
简单数据类型之间的转换又可以分为:
●低级到高级的自动类型转换
●高级到低级的强制类型转换
注意低级向高级是自动转换的。