b = b1 + b2;会报错
b = 3 + 4;不会报错。
错误原因:涉及到编译器编译程序时候的细节,之所以byteb=3+7;,没有报错,是因为3和7都是
常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。而b=b1
+b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个
byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范
围,因此就会报错。 |
|