public class Demo{
public static boolean demo(){
//编译通过。
byte b = 4;
//编译通过。
byte b2 = 5;
/*
* 编译失败。
* 在java中,变量是不确定的,编译时期编译器是并知道b和b2的值的(编译只是检查语法问题,赋值是在运行时发生的)。
* 所以会将b、b2所有可能值都进行判断。因此b+b2即使有可能超出范围,都不会通过编译,除非进行强制类型转换。
*/
byte b3 = b + b2;
/*
* 编译通过。
* 在java中,常量的值是固定的,所以编译器能够对值进行判断是否在byte范围内。
* 因此,若在范围内,则编译通过;否则,编译失败。
*/
byte b4 = 4 + 5;
}
} |