public class LleiXingZhuanHuan {
public static void main(String[] args) {
/*
* 类型转换面试题1:下列代码是否存在错误,若果有,请指出说明,并纠正。
* byte b1=4;
* byte b2=3;
* byte b3=b1+b2;
*
* 错误原因:
* b1和b2是两个byte类型,在运算的时候,会提升为int类型
* 提升之后,就是两个int在运算了,运算的结果还是int
* 将int类型的结果,赋值给byte类型的变量,属于大给小,不能直接给。
*
byte b1=4;
byte b2=3;
byte b3=(byte)(b1+b2);
System.out.println(b3);
面试题2(正确)
byte b=3+4;
System.out.println(b);
这里的3和4是两个字面量,之前说过,所有整数默认都是int类型,说以这里应该是两个int做运算
运算后的结果还是int,int类型结果给byte类型变量赋值,大的给小的,不能直接给,应该是编译错误
但是注意:
java存在常量优化机制:在编译的时候(javac)就会将3和4这两个字面量进行运算,
产生的字节码文件:byte b=7
*/
}
}