黑马程序员技术交流社区

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

作者: serge    时间: 2015-11-28 23:36
标题: 类型转换
老师讲课时有一句话是:在0到127之间,byte,char,int之间可以相互转换。
但是,我写了以下代码:
  1. char c = 'a';
  2. byte b = c;

  3. int i = 2;
  4. byte by = i;
复制代码

都报错误,说是可能影响精度。
这么说来,最上面那句话就是错的咯?


作者: zqiang    时间: 2015-11-28 23:47
byte和char可以自动提升为int型,int型向下转型需要强制转换.
作者: serge    时间: 2015-11-28 23:50
zqiang 发表于 2015-11-28 23:47
byte和char可以自动提升为int型,int型向下转型需要强制转换.

非常感谢你的回答,加上之后就ok了。
char c = 'a';
        byte b = (byte)c;
        int i = 2;
        byte by = (byte)i;
作者: yuhongzhen    时间: 2015-11-29 09:16
zqiang 发表于 2015-11-28 23:47
byte和char可以自动提升为int型,int型向下转型需要强制转换.

嗯,不错。小转大可以自动转,大转小需要强转。
作者: TG·小强    时间: 2015-11-29 10:09
其实最重要的是看内存空间,
1.   byte:8二进制位。-128~127.
      char:     0~65535

所以把字符型转成byte型需要强制转化。而把byte转成char也需要强制转化。
2.   同理整型int:32二进制位。-2^(32-1)~-2^(32-1)-1   

所以整型转化成byte型需要强制转化,而byte型转化成整型可以自动提升。

强制转化的格式int b=266;byte a=(byte)b;强制转换会丢失精度,但不会报错了。输出结果为a=10;
希望对你理解有帮助
作者: serge    时间: 2015-11-29 12:28
TG·小强 发表于 2015-11-29 10:09
其实最重要的是看内存空间,
1.   byte:8二进制位。-128~127.
      char:     0~65535

很详细 非常感谢




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