第一次输入的是byte c = 6+8;很正常,可以通过编译
第二次输入的是byte c = 300+7;不能通过编译
原因:6+8是两个整数常量,默认的数据类型是int,所以是两个int相加还是int,所以应该需要强转?
知识点:java常量优化机制
6和8是常量,java存在常量优化机制,会在编译时让6和8进行相加,最后会判断结果14是否在byte的取值范围之内
1.不在范围之内,编译出错
2.在范围之内,通过编译
解决方案:就是进行强转
byte c = byte(300+7);