1.6 使用Compiler API
JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。
Compiler API通过一套易用的标准的API提供了更加丰富的方式去做动态编译,而且是跨平台的。
1.7
1.switch中可以使用字串
2."<>"这个玩意儿的运用
ListtempList = new ArrayList<>(); 即泛型实例化类型自动推断。
3.自定义自动关闭类
interface AutoCloseable
只要实现该接口,在该类对象销毁时自动调用close方法,你可以在close方法关闭你想关闭的资源
4.对Java集合(Collections)的增强支持
List list=["item"]; //向List集合中添加元素
String item=list[0]; //从List集合中获取元素
Set set={"item"}; //向Set集合对象中添加元素
Map map={"key":1}; //向Map集合中添加对象
int value=map["key"]; //从Map集合中获取对象
5.数值可加下划线
int one_million = 1_000_000;
6.支持二进制文字
int binary = 0b1001_1001;
7.在try catch异常扑捉中,一个catch可以写多个异常类型,用"|"隔开
try {
......
} catch(ClassNotFoundException|SQLException ex) {
ex.printStackTrace();
}
8.jdk7之前,你必须用try{}finally{}在try内使用资源,在finally中关闭资源,不管try中的代码是否正常退出或者异常退出。jdk7之后,你可以不必要写finally语句来关闭资源,只要你在try()的括号内部定义要使用的资源
public class FileCopyJDK7 {
public static void main(String[] args) {
try (BufferedReader in = new BufferedReader(new FileReader("in.txt"));
BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"))) {
int charRead;
while ((charRead = in.read()) != -1) {
System.out.printf("%c ", (char)charRead);
out.write(charRead);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
1.8
1.接口的默认方法
interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
2.Lambda 表达式
3.函数式接口
.....
https://mp.weixin.qq.com/s/-mG6XsXLCXTnL-efV3mX4Q