黑马程序员技术交流社区

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

作者: 李彦来    时间: 2014-5-11 18:52
标题: 类型转换问题
byte  b=3;
b=b+2;
这个编译时报错我知道!
我想问的是:2默认是int 在和b相加时,b不是会类型自动提升吗?也就是说b会自动升级为int的4字节!
既然b已经是int了,
但是为什么还要强制转换为byte呢?
作者: 最后的希冀    时间: 2014-5-11 19:59
额,这个b应该是在参与运算时,被自动提升为int类型参与运算,但是,它在变量存储的时候是byte的类型。这就好比,在变量声明时,声明b为byte类型,那么Java就会为其开辟1的字节的空间,但是当参与运算时,会将b的值取出并提升为4个字节,但是当结束运算后,想要存储到b的空间时,b只能存1个字节,所以必须强制转换。应该是这样吧
作者: 凝霜的枯藤    时间: 2014-5-11 21:07
b+2这个表达式是int类型,b的声明还是byte类型,运算时只不过将b的值取出并提升为4个字节.
作者: 李彦来    时间: 2014-5-12 07:21
最后的希冀 发表于 2014-5-11 19:59
额,这个b应该是在参与运算时,被自动提升为int类型参与运算,但是,它在变量存储的时候是byte的类型。这就 ...

哦,明白了!谢谢啊
作者: 李彦来    时间: 2014-5-12 07:23
凝霜的枯藤 发表于 2014-5-11 21:07
b+2这个表达式是int类型,b的声明还是byte类型,运算时只不过将b的值取出并提升为4个字节. ...

谢谢,我明白了!




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