黑马程序员技术交流社区
标题:
类型转换
[打印本页]
作者:
疯狂程序
时间:
2013-3-20 11:40
标题:
类型转换
short s1 = 1; s1 = s1+1; 有什么错? short s1 = 1; s1 += 1; 有什么错?
作者:
刘松老师
时间:
2013-3-20 12:05
short s1 = 1; s1 = s1+1;会报类型转换错误,需要进行类型强制转换, short s1 = 1; s1 += 1; java虚拟机会自动进行类型提升,可以正常运行。
作者:
毛恩奇
时间:
2013-3-20 12:21
楼上正解。。。因为1是int型,s1是short型,两个相加会类型提升为int型,需强制转换为short型,应改成s1=(short)(s1+1);
而后面那句s1+=1;自动完成强类型转换
作者:
Alex shaw
时间:
2013-3-20 12:23
这应该是一道java面试题吧,我面试的时候也碰到过
首先我们看short s1 = 1; s1 = s1+1;s1是short类型,用short类型加上一个整形,他会强制转换成4个字节的int类型,而把int类型复制给一个连个字节的short,会丢失两个字节的长度,因此会报错
short s1 = 1; s1 += 1;不会报错 s1=s1+1;改成s1+=1;虽然是一个意思,但是在jvm里面是不同的方法做的,是运算符重载,不会报错
作者:
李阳阳
时间:
2013-3-20 12:30
本帖最后由 李阳阳 于 2013-3-20 12:32 编辑
在java语言中,整数的默认类型是int型,浮点数的默认类型是double型,对于不同类型的数值进行计算时,
结果总是转换为经度最高的数据类型,因此将计算结果赋值给变量时,这个变量的类型的精度不能低于
参加计算的精度最高的数据类型,否则就会编译错误。
因为s与int数据求和后是int类型的数值,所以无法复制给short类型的变量s,所以下列式子会编译错误。
short s=1; s=s+1;
作者:
田磊阳
时间:
2013-3-20 13:00
你看一下毕老师的视频,上面有,具体是这样的:
s1是short类型,用short类型加上一个整形,他会强制转换成4个字节的int类型,short是两个字节的,会丢失两个字节的长度,因此会报错
short s1 = 1; s1 += 1;不会报错 s1=s1+1;改成s1+=1;虽然是一个意思,但是在jvm里面会对数据类型进行自动的提升,所以不会报错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2