黑马程序员技术交流社区

标题: 这些类型怎样转化的啊,求教 [打印本页]

作者: 我来也    时间: 2015-4-11 19:36
标题: 这些类型怎样转化的啊,求教
下面的类型转化是怎样样的啊。
a. byte b = 1 + 1;     
b. byte b = 1; b = b + 1;
c. byte b = 1; b = b += 1;   
d. byte b = 1; b = ++b;
作者: 1017161726    时间: 2015-4-11 19:55
a中的1默认是int型的。1+1是int型2.然后赋值给byte型b,损失精度。
b中的b=b+1,这个1也是int型的,b会自动提升。然后b+1是int型2,赋给byte型b,损失精度。
c中“+=”不会自动提升。还是byte型。
d中b自加1也不会自动提升。
作者: wkz_crystal    时间: 2015-4-11 20:08
设计到java中基本类型的自动提升和赋值运算符的问题了!看看相应的视频能over的
作者: 徐顺醒    时间: 2015-4-11 21:22
1.  byte b =(byte)( 1 + 1);    原因:整数的在java 中默认类型是int类型,l因为int类型的数据范围比byte类型的数据范围大,将他赋值到变量b,可能会造成精度损失,需要强制转换成Byte类型。
2.. byte b = 1; b =(byte)( b + 1);  同上,因为 b + 1中,1是int类型,因为b为byte类型比int类型数据范围小,所以与b相加后还是int类型,原因同上, 在保证-128<=b+1<=127 情况下 , 可以使用强制转换将b + 1转换成byte 类型!!   
作者: showdy    时间: 2015-4-11 23:56
a.编译失败,b编译失败,c 编译通过,d 编译通过
作者: 84489556    时间: 2015-4-12 00:12
各位大神v5 学习了
作者: 黑马TYR    时间: 2015-4-12 00:15
看一下类型转换的就清楚了
作者: 郁永鹏    时间: 2015-4-12 00:16
你看看书中的类型转换那部分,写的很清楚,视频讲的也很清楚的,自己看会了比别人告诉记忆力要强的多,挺简单的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2