黑马程序员技术交流社区

标题: 类型转换,小白求助 [打印本页]

作者: 勤奋小白    时间: 2016-12-6 22:27
标题: 类型转换,小白求助
这三种情况,请大神指教!最好在内存中的流程讲解


作者: xyy222    时间: 2016-12-6 22:57
变量计算结果默认是int类型,把int赋值给byte必须前面加(int)强转
作者: hlll    时间: 2016-12-7 00:04
在JAVA中整数的默认类型是int,所以第一句:a=5+b;中编译时会报错(5理论上说属于byte类型,也属于int,但是有默认存在,所以数字5就是int类型;而变量b,虽然你赋了值,但是'编译'时不能识别b里的值,所以它认为有b=127(最大)的可能性;-->存在情况:byte a=5+127;so。。)第二句正确;第三句同第一句,(虽然a,b,c都是定义的byte类型,but,a+b的值存在超出byte的情况)

作者: hlll    时间: 2016-12-7 00:07
补充一点,不管是5,3,4都是常量,而JAVA有常量优化机制,它会自动判断是否在byte范围内,所以不用担心int的5,4,3赋值给byte问题

作者: java小白玉    时间: 2016-12-7 00:07
看一下强制转换和默认的基本数据类型这两个多看一看,上面两位说的综合在一起

作者: hlll    时间: 2016-12-7 00:08
byte强转加(byte)

作者: 勤奋小白    时间: 2016-12-7 08:20
hlll 发表于 2016-12-7 00:04
在JAVA中整数的默认类型是int,所以第一句:a=5+b;中编译时会报错(5理论上说属于byte类型,也属于int,但 ...

谢谢大神

作者: IT虫    时间: 2016-12-7 08:33
强制转换呀!byte short int long研究研究的

作者: 勤奋小白    时间: 2016-12-8 10:40
IT虫 发表于 2016-12-7 08:33
强制转换呀!byte short int long研究研究的

恩恩,谢谢
作者: 勤奋小白    时间: 2016-12-8 10:41
hlll 发表于 2016-12-7 00:08
byte强转加(byte)

恩恩谢谢
作者: 勤奋小白    时间: 2016-12-8 10:43
xyy222 发表于 2016-12-6 22:57
变量计算结果默认是int类型,把int赋值给byte必须前面加(int)强转

原来是常量和变量的问题,我已经懂了,谢谢
作者: IT虫    时间: 2016-12-8 17:53
勤奋小白 发表于 2016-12-8 10:40
恩恩,谢谢

自学?

作者: 勤奋小白    时间: 2016-12-9 08:05
IT虫 发表于 2016-12-8 17:53
自学?

自学后听老师讲





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