我们知道在java中 整形默认是int类型
byte num = 100; //也就是相当于100 是Int类型 但是我们并没有做强制类型转换,就可以直接赋值给num num的类型是byte类型, 针对这个问题作出如下解释。
package com.hblg.day02;
/**
* @author i
* @create 2019/9/3 21:10
* @Description java编译器的优化
* 对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围
* 那么javac编译器就会自动隐含地为我们不上一个强制类型转换(byte)(short)(char)
* 1、如果没有超出左侧的范围,自动不上强制类型转换
* 2、如果超出左侧的范围,编译直接报错
*/
public class DemoNotice {
public static void main(String[] args) {
byte num = 100; //相当于是 byte num = (byte)100;
// byte num2 = 128; 编译失败
char char1 = 65; //相当于 char char1 = (char)65;
}
}