A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liu45495284 中级黑马   /  2015-7-7 22:45  /  822 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class VerDemo1 {
        public static void main(String[] args) {
                      byte  b = "a";
                      System.out.println(b);
}
}

请问byte是一个字节,“a”是字符是两个字节,为什么打印出来b=97,却不会报错,这不是损失精度吗?

10 个回复

倒序浏览
byte  b = ‘a’,不是 “a” 。。。。jvm会首先检查‘a’的值,如果不超过byte的范围,将不会报错!!!
回复 使用道具 举报
micro_hx 发表于 2015-7-7 22:48
byte  b = ‘a’,不是 “a” 。。。。jvm会首先检查‘a’的值,如果不超过byte的范围,将不会报错!!! ...

那个‘a’没注意,谢谢。
另外字符是2个字节啊?
回复 使用道具 举报
liu45495284 发表于 2015-7-7 22:52
那个‘a’没注意,谢谢。
另外字符是2个字节啊?

说过了啊。jvm会首先检查‘a’的值,如果不超过byte的范围,将不会报错!!! ...
回复 使用道具 举报
曲终烟尽 来自手机 中级黑马 2015-7-7 23:07:01
报纸
char类型是两个字节,byte是一个字节。
回复 使用道具 举报
这里赋值有隐式类型转换,当然不报错
回复 使用道具 举报
这个是隐式转换的问题,那个“a”   ASCII 表中的 a的值对应的就是97.输出97 也就不奇怪了。
回复 使用道具 举报
赋值有隐式类型转换
回复 使用道具 举报
a是字符,根据ASCII码表,a对应就是97。
回复 使用道具 举报
a字符对应97,byte取值范围-128——127,直接赋值
回复 使用道具 举报
你打印出的 阿斯科马表
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马