黑马程序员技术交流社区
标题:
关于short的基础问题
[打印本页]
作者:
毕影彬
时间:
2012-11-5 15:57
标题:
关于short的基础问题
本帖最后由 毕影彬 于 2012-11-6 07:36 编辑
short s1 = 1;
s1 = s1 + 1;
是错误的。
但是,为什么s1 += 1; 是正确的, 求解。
作者:
齐连涛
时间:
2012-11-5 16:05
s1 = s1 + 1; 这个表达式后面的1是int类型 1跟s1相加,s1自动提升成了int类型 结果也是int类型 赋给short 没有强转不行
s1 += 1; 内部实现了强转;
不清楚 在回去看看视频吧
作者:
黑马周磊
时间:
2012-11-5 16:10
s1 = s1 +1; 有个赋值动作。s1是short型,1是int型,所以s1+1后的值是int型。把一个int型的值赋给short的变量是不可以的。
s1 += 1;的赋值动作是隐式的,由编译器来完成的,相当于强制把类型转换成了short型。
作者:
朱宏青
时间:
2012-11-5 16:16
可以这样理解:s1 = s1 + 1;这个是分步运算,先将右边的算好,然后再赋给左边的。由于1这个数系统默认是int型的,按照规定,低级的转成高级,所以si被隐式的转换成了int,那么右边最后是int型,左边则是short型,自然不能赋予。
而si +=1;这个你可以理解为同步运算,s1的优先级比1的要高,所以按照s1的标准来,那么s1+1的结果就会被转换成short再赋予给s1:s1 = (short)(s1+1);
作者:
刘丽娜
时间:
2012-11-5 20:19
上面的是类型转换错误 下面是java的特性 可以自动类型转换
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2