黑马程序员技术交流社区

标题: 类型提升问题 [打印本页]

作者: 潘际昌    时间: 2013-11-26 22:05
标题: 类型提升问题
求大手指点下 怎么把byte提升为int型
作者: HAnG    时间: 2013-11-26 22:13
本帖最后由 HAnG 于 2013-11-26 22:16 编辑

在前面写个(int)就行了
byte b = 5;
int i = (int)b;




作者: 王贺    时间: 2013-11-26 22:30
由于byte在java里占1个字节,int在java里占4个字节,int的值范围比byte的大,所以在byte转换为int时会自动转换,当然你也可以强制转换,byte b=2; int t=b;//或者是int t=(int)b;
在int转换为byte,就应该考虑范围了,如果数值大肯定也就溢出了。

举个例子 比如 byte为0000四位,int为00000000八位吧,
byte b=1010;
int t=b;//这时候t=00001010;

如果int t=01001010;
byte b=t;//这时候因为byte四位,而t需要七位,所以就不能进行转换了

希望可以对你有帮助
作者: 樊志伟    时间: 2013-11-26 22:34
我想了想,是这么写的。
  1. class test {
  2.       public static void main(String[] args) {
  3.              Byte b = (byte) 1;
  4.              int a = b.intValue();
  5.              System.out.println(a);
  6.       }
  7. }
复制代码


注意,写成 Byte b = (byte) 1;
和写成 byte b= 1;是不一样的。Byte 是基本数据包装类,是将基本数据byte包装成对象的类。而byte是一个基本数据类型。写成byte是不能调用intValue方法的。只有写成Byte才能调用这个方法。
我的代码的意思是将Byte类型的b强制转换成byte,所以b是byte类型的。
然后调用intValue方法将byte类型的b装换成int型。应该是符合了你的题目要求。


作者: 樊志伟    时间: 2013-11-26 22:36
貌似我弄的比较深奥了,楼上几位的说法也挺对的




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