我们知道在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;
    }

}