黑马程序员技术交流社区

标题: 关于转换类型 的问题 [打印本页]

作者: 踏雪风暴    时间: 2014-6-23 11:29
标题: 关于转换类型 的问题
本帖最后由 踏雪风暴 于 2014-6-24 10:26 编辑

byte b = 3;
b = 3 + 4;
//b = b + 4;
System.out.println(b);
我知道第三句是错的,但我也认为第二句也是错的,是整数赋值给了  byte 所以错的 ,
但是结果为什么能打出来呢,  值为 7  求解答
作者: 会说话的木头    时间: 2014-6-23 11:35
你把b=b+4注释掉了,b=3+4,执行了结果当然是7
作者: 踏雪风暴    时间: 2014-6-23 11:56
本帖最后由 踏雪风暴 于 2014-6-23 11:57 编辑
会说话的木头 发表于 2014-6-23 11:35
你把b=b+4注释掉了,b=3+4,执行了结果当然是7

b=3+4    右边的不是 int  吗  ,两边的类型不同  会缩小精度  编译应该出问题吧  所以不明白为何  为7
作者: 会说话的木头    时间: 2014-6-23 12:47
踏雪风暴 发表于 2014-6-23 11:56
b=3+4    右边的不是 int  吗  ,两边的类型不同  会缩小精度  编译应该出问题吧  所以不明白为何  为7  ...

int 可以转换成byte类型 1.6以后自动装箱拆箱
作者: 踏雪风暴    时间: 2014-6-23 12:59
会说话的木头 发表于 2014-6-23 12:47
int 可以转换成byte类型 1.6以后自动装箱拆箱

那我想问下 这样的情况 都有哪些类型  是针对基本数据类型吗?? 我先支持你一下
作者: AuroraAria    时间: 2014-6-23 12:59
会说话的木头 发表于 2014-6-23 12:47
int 可以转换成byte类型 1.6以后自动装箱拆箱

1.6以后就自动装箱拆箱吗?学习了!
作者: a5702727    时间: 2014-6-23 13:17
3  4都是常量  只要不超过byte的范围就不会错 第三行的B是变量 想加会提升类型
作者: 会说话的木头    时间: 2014-6-23 13:53
踏雪风暴 发表于 2014-6-23 12:59
那我想问下 这样的情况 都有哪些类型  是针对基本数据类型吗?? 我先支持你一下 ...

我不知道该怎么回答你,你先b=3+4;这肯定没问题,运算完赋值给b,byte占一个八位,int占4个八位,b=b+4;右边的b就被类型提升了,变成4个八位,b+4运算完就是4个八位,你把一个4个八位的结果赋给一个八位的b,肯定是不可以的!你先这样理解吧
作者: alive    时间: 2014-6-23 18:42
自动装箱拆箱是对于基本数据类型包装类的,跟这些挨不上。b=3+4能通过是因为运算得到的int类型值7在byte的范围内,所以编译可以通过,而b=b+4中b是变量,大小不确定,运算后的值可能会超出byte的范围,编译器不能识别,所以编译报错
作者: 踏雪风暴    时间: 2014-7-11 15:48
呵呵呵呵呵呵
作者: 踏雪风暴    时间: 2014-7-11 16:00
myeclipse10 的bug
作者: 踏雪风暴    时间: 2014-7-11 16:29
DirectoryDirectoryDirectory
作者: rekirt    时间: 2014-7-11 21:17
常量相加是先相加,然后判断是否溢出,变量相加先转换类型再相加
作者: rekirt    时间: 2014-7-11 21:18
踏雪风暴 发表于 2014-6-23 12:59
那我想问下 这样的情况 都有哪些类型  是针对基本数据类型吗?? 我先支持你一下 ...

基本数据类型就不存在装箱拆箱
作者: 沐子松/kf    时间: 2014-7-11 21:51
学习              
作者: 天涯无痕    时间: 2014-7-11 22:48
装箱 拆箱什么意思?是数据类型的自动转换吗
作者: 踏雪风暴    时间: 2014-7-12 21:23
1.6以后就自动装箱拆箱吗?学习了!
作者: doubandddk    时间: 2014-7-14 11:22
这么说吧,你觉得 byte b = 3 是对的吧 那么你觉得byte b = 3+4和 b = 3 有区别么不就是byte b = 7么
作者: 心?=忐§忑]    时间: 2014-7-14 23:29
byte b = 3;
b = 3 + 4;
//b = b + 4;
System.out.println(b);

b=3+4 ; 先算右边3+4等于7,然后赋值给b .




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