short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确。,为何? 因为S1是short型的,占2个字节,而1是int型的,占4个字节。在两个类型的值相加的时候,会发生自动类型的提升。也就是说s1+1后,其结果是int型的,而不是short型的,所以可以想想看,把4个字节的东西放在两个字节的空间里,肯定编译不通过。后面的那个不会发生类型的提升,是在其基础上加了一个1,还是short型,所以不会出错。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问quiton(蛛蛛):1是int型为什么可以赋给short型的s1呢? short s1 = (short) 1 s1 = s1 + 1和s1 += 1没什么区别啊 所有的byte型,short型和char型的值在运算时将被提升为int型 s1 = s1 + 1和s1 += 1是有区别的。s1=s1+1会错因为s1是short,而1是int,所以运算时会自动转换为int,再将int赋值给s1是需要强制转换,所以会错。JAVA规范上说 e1+=e2 实际上是 e1=(T1)(e1+e2),其中T1是e1的数据类型。 s1+=1等效于 s1=(short)(s1+1),所以是正确的。 关于List<Map>的使用 打包好的JAR包,拷贝安装过后Jre文件,如何设置关联配置 Java Date类型转换问题 applet能实现页面截屏吗? ibatics是什么,能否告诉我下 请教有关java可执行程序的生成~ 环境变量设置问题 如何在JtextArea中加入小图标? 请问全角字符和半角字符分别是什么,他们到底有什么不同啊 名词解释!^_^ Thread的sleep根本就没有用? 关于image.getWidth(this)参数
s1=s1+1会错因为s1是short,而1是int,所以运算时会自动转换为int,再将int赋值给s1是需要强制转换,所以会错。
JAVA规范上说 e1+=e2 实际上是 e1=(T1)(e1+e2),其中T1是e1的数据类型。 s1+=1等效于 s1=(short)(s1+1),所以是正确的。