你能看懂吗?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangshuxuncom/article/details/88843939
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的存储范围。
	}
}

猜你喜欢

转载自blog.csdn.net/wangshuxuncom/article/details/88843939