你能看懂吗?

public class Test {
	
	public static void main(String[] args) {
		byte a=1;//为什么编译不报错?javac编译代码时发现变量a是byte类型,byte类型有八个二进制位,其范围为-128 ~ 127,而1在其范围内,所以编译通过。
		
		byte b=1;
		byte c = a+b;//为什么编译报错?a和b是两个变量,javac编译代码时没有运行程序,不知道变量的具体值是多少,javac认为执行java命令时其运算结果有可能超过byte数据类型所能表示的最大范围,所以将结果数据类型提升为int类型,也就是java整数的默认数据类型,故此时会报这样的编译错误。
		byte d=a+1;//为什么编译报错?原因同上

		byte e=1+1;//为什么编译不报错?javac编译代码时发现现在是两个常量相加,其结果没有超过byte数据类型的范围,所以没有编译出错,如果为“byte e=100+100;”,则编译会出错,因为超出了byte的存储范围。
	}
}

 

发布了327 篇原创文章 · 获赞 571 · 访问量 164万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览