黑马程序员技术交流社区

标题: byte和char的问题 [打印本页]

作者: liu45495284    时间: 2015-7-7 22:45
标题: byte和char的问题
class VerDemo1 {
        public static void main(String[] args) {
                      byte  b = "a";
                      System.out.println(b);
}
}

请问byte是一个字节,“a”是字符是两个字节,为什么打印出来b=97,却不会报错,这不是损失精度吗?
作者: micro_hx    时间: 2015-7-7 22:48
byte  b = ‘a’,不是 “a” 。。。。jvm会首先检查‘a’的值,如果不超过byte的范围,将不会报错!!!
作者: liu45495284    时间: 2015-7-7 22:52
micro_hx 发表于 2015-7-7 22:48
byte  b = ‘a’,不是 “a” 。。。。jvm会首先检查‘a’的值,如果不超过byte的范围,将不会报错!!! ...

那个‘a’没注意,谢谢。
另外字符是2个字节啊?
作者: micro_hx    时间: 2015-7-7 23:01
liu45495284 发表于 2015-7-7 22:52
那个‘a’没注意,谢谢。
另外字符是2个字节啊?

说过了啊。jvm会首先检查‘a’的值,如果不超过byte的范围,将不会报错!!! ...
作者: 曲终烟尽    时间: 2015-7-7 23:07
char类型是两个字节,byte是一个字节。
作者: 心在左边跳    时间: 2015-7-7 23:10
这里赋值有隐式类型转换,当然不报错
作者: gongyanfa123    时间: 2015-7-7 23:17
这个是隐式转换的问题,那个“a”   ASCII 表中的 a的值对应的就是97.输出97 也就不奇怪了。
作者: 逆袭白富美    时间: 2015-7-7 23:18
赋值有隐式类型转换
作者: 河豚    时间: 2015-7-7 23:20
a是字符,根据ASCII码表,a对应就是97。
作者: 任文龙    时间: 2015-7-7 23:24
a字符对应97,byte取值范围-128——127,直接赋值
作者: q953655369    时间: 2015-7-7 23:32
你打印出的 阿斯科马表




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