使用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();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。