1、面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
class DataTypeConversion{
public static void main(String[] args){
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
System.out.println(b3);
}
}
从两个方面:
- byte与byte(或short,char)进行运算的时候会提升为int,两个int类型相加的结果页是int类型
- b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围。
2、下面代码可以正常输出结果为:7
class DataTypeConversion{
public static void main(String[] args){
byte b3 = 3 + 4;
System.out.println(b3);
}
}
Java编译器有常量优化机制,判断3+4
结果为7
在byte
的范围内,所以可以正常编译通过。
3、当我们直接声明的值超出byte类型时:
class DataTypeConversion{
public static void main(String[] args){
byte v = 300;
System.out.println(v);
}
}
则会直接报错:提示我们强制转换为byte或直接改变数据类型为int。
你要去做一个大人,不要回头,不要难过。