使用Java代码的整个过程
.java --javac--> .class --类加载器--> 转换后的.class --解释器--> 可执行代码 --JIT编译器--> 机器码

1、类文件在加载过程中通常会被处理和修改,比如Spring框架中的代理类
2、Java .class字节码更像是中间状态;Java中的真正编译器是JIT,将可执行代码 在 运行时编译成机器码。

语法糖

1、描述的是一种语言特性,使用起来更辩解
2、语法糖在编译处理早起会从编译结果中移除,变为相同特性的基础表示形式,称为"去糖化"

Java7 小特性

1、Switch 支持String类型

int x = Integer.parseInt("1100110",2);
int x = 0b1100110;

2、在二进制或其他常数值中加入下划线

long tail = 100_000_000;

3、简化分类异常处理:

try{
    
}catch(ExceptionA1 | ExceptionA2){
    
}catch(ExceptionB1 | ExceptionB2){}

4、Try-with-resource

将资源的关闭交给编译器进行处理,并改善了问题的跟踪日志。

旧写法

try{
    // 文件处理
}catch{
    // 文件处理
}finally{
    // 文件处理
}

新写法

try(InputStream in = new InputStream(new FileInputStream("test.txt"))){
    //文件处理
}catch{}

可能会出现资源无法关闭的情况,改进写法:为各个资源独立声明变量

try( FileInputStream fis = new FileInputStream("test.txt");
    InputStream in = new InputStream(fis)){
    //文件处理
}catch{}

5、钻石语法:针对创建泛型定义和实例过于繁琐做出的改进

Map<Integer,Map<String,String>> map = new HashMap<Integer,Map<String,String>>();

Map<Integer,Map<String,String>> map = new HashMap();

paraller
207 声望12 粉丝