黑马程序员技术交流社区

标题: 赋值问题 [打印本页]

作者: 程宁宁    时间: 2013-3-27 12:06
标题: 赋值问题
本帖最后由 程宁宁 于 2013-3-29 21:18 编辑

byte b=127;为什么正确   ?按常理来说,127默认是int型,不会自动转换到byte型的,需要强转的啊????????

作者: 胡志超    时间: 2013-3-27 12:13
127是byte类型的上限,是可以这样赋值的,但是如果byte b=127;中b参与了算术运算,就会自动提升为int类型
作者: itserious    时间: 2013-3-27 12:13
byte b=127;为什么正确   ?按常理来说,127默认是int型,不会自动转换到byte型的,需要强转的啊????????

回答:这是int的类型数据的一个小特点。
当你的 int 值,在一个byte 的泛围内能装下,JVM就只会在内存中开辟一个byte大小的空间来装这个int值。
这是为了节约内存。也就是说当你的int值在-128~127内的话,就会自动转换成byte类型,
所以就可以用byte来接收int了。
作者: 罗胜华    时间: 2013-3-27 12:25
这样跟你说吧
byte在内存中占1个字节  一个字节是8位,所以byte类型的变量取值范围是-128-127
所以说: byte b = 127;是不需要强转的
还有int整形是4个字节 站32为,如果你要把一个整形强转成byte,那么就相当于去掉整形前面26位,只保留后面8位。
作者: 赵喜平    时间: 2013-3-27 15:51
byte是数值型的一种,其取值范围是 -128——127 byte b=127是byte类型的范围之内,其中没有强转的问题,数值型的数据默认是整型是没错的。




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