1. 二进制数值表达方法,可以加前缀 0b 或者 0B,来表达byte, short,int和long。 这个是和之前的十六进制表达方式 0x 或 0X 是相对应的。
byte b = (byte)0b00100001;
int i = 0b101;
2. 数值中间可以用下划线断开,例如
long creditCardNumber = 1234_5678_9012_3456L;
float pi = 3.14_15F;
但是下划线不能再开头,结尾,或者 F, L的前面
3. 泛型定义时可以自动推断出来,但是 <>这个符号是不能少的。
比如
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
可以写成:
Map<String, List<String>> myMap = new HashMap<>();
4. try-with-resources。 resource必须是 java.lang.AutoCloseable。会自动调用它的close()方法。
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
br.readLine();
}
也可以同时声明多个resource:
try (BufferedReader br = new BufferedReader(new FileReader("path"));
BufferedReader br2 = new BufferedReader(new FileReader("path"))) {
br.readLine();
}
也可以用在JDBC的 Statement上
try (Statement stmt = cn.createStatement()) {
ResultSet rs = stmt.executeQuery("SELECT * FROM table1");
}
5.同时捕获多个Exception
try{
...
} catch (IOException ex) {
...
}catch (SQLException ex) {
...
}
可以这样写了
try{
...
} catch (IOException|SQLException ex) {
...
}
6. 新的文件读写包 java.nio.file。比之前的java.io.File强大不少。 常用的有 Files, Paths
Paths:用来生成一个实现Path接口的实现类。由于jvm运行的平台不同,会得到不同的Path实现类。
Files:具体对文件进行操作的类,包括复制文件,创建目录,创建文件,创建连接,删除文件,获取文件的BufferReader,BufferWriter,InputStream,OutputStream,以字节和字符串形式读取文件,写入文件内容等等
7. fork/join 框架,基于 ForkJoinPool 类,它是 Executor 接口的实现,设计它用来进行高效的运行大量任务;ForkJoinTask代表一个需要执行的任务,真正执行这些任务的线程是放在一个线程池(ForkJoinPool)里面。它可以把一个大的任务划分为若干个小的任务并发执行,充分利用可用的资源,进而提高应用的执行效率。采用work-stealing 的方式,比ExcuteService更高效。
8. 新的垃圾回收器G1,可以替代之前的 CMS ( Concurrent Mark-Sweep Collector)