JDK 1.5 - 1.8 各版本的新特性总结

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)的增强支持

  1. List<String> list=["item"]; //向List集合中添加元素

  2.      String item=list[0]; //从List集合中获取元素

  3.      Set<String> set={"item"}; //向Set集合对象中添加元素

  4.      Map<String,Integer> map={"key":1}; //向Map集合中添加对象

  5.      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()的括号内部定义要使用的资源

  1. public class FileCopyJDK7 {

  2.   public static void main(String[] args) {

  3.      try (BufferedReader in  = new BufferedReader(new FileReader("in.txt"));

  4.           BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"))) {

  5.         int charRead;

  6.         while ((charRead = in.read()) != -1) {

  7.            System.out.printf("%c ", (char)charRead);

  8.            out.write(charRead);

  9.         }

  10.      } catch (IOException ex) {

  11.         ex.printStackTrace();

  12.      }

  13.   }

  14. }

1.8

1.接口的默认方法

  1. interface Formula {

  2.    double calculate(int a);

  3.    default double sqrt(int a) {

  4.        return Math.sqrt(a);

  5.    }

  6. }

2.Lambda 表达式

3.函数式接口

.....

https://mp.weixin.qq.com/s/-mG6XsXLCXTnL-efV3mX4Q

猜你喜欢

转载自my.oschina.net/u/3705388/blog/1794396