• 1. Java高级应用编程 —— Java7新特性简介V1.1
  • 2. 本章内容节知识点掌握程度难易程度Java7新特性简介数值常量对下划线支持掌握声明二进制常量掌握switch对String的支持掌握catch表达式调整掌握“<>”类型推断运算符了解自动资源管理了解NIO 2了解难G1垃圾回收器理解
  • 3. Java7新特性简介数值常量对下划线支持 JDK 7中,你可以在数值常量中使用'_'来提升可读性。这对在源代码中使用了大数字的人来说尤其有用,例如在金融或者计算领域中。int billion = 1_000_000_000;  // 10^9   long creditCardNumber =  1234_4567_8901_2345L; //16 digit number   long ssn = 777_99_8888L;   double pi = 3.1415_9265;   float  pif = 3.14_15_92_65f;  
  • 4. Java7新特性简介数值常量对下划线支持 不能在小数后面,或者数字的开始和结束的地方放下划线。下面的数值常量就是不正确的,因为它们错误地使用了下划线 double pi = 3._1415_9265; // 小数点后不能添加下划线 long creditcardNum = 1234_4567_8901_2345_L; // 数字结尾不能添加下划线 long ssn = _777_99_8888L; // 数值开头不能添加下划线
  • 5. Java7新特性简介声明二进制常量 JDK7中,对于整型类型(byte, short, int 和long)来说,你可以用‘0b’前缀来表明这是一个二进制的常量。int mask = 0b01010000101; // 结合下划线,这样写更好 int binary = 0B0101_0000_1010_0010_1101_0000_1010_0010;
  • 6. Java7新特性简介switch对String的支持 在JDK7中,在switch中可以使用String类型,注意比较是大小写敏感的。String state = "NEW"; switch (state ) { case "NEW": System.out.println("Order is in NEW state"); break; case "CANCELED": System.out.println("Order is Cancelled"); break; case "REPLACE": System.out.println("Order is replaced successfully"); break; default: System.out.println("Invalid"); }
  • 7. Java7新特性简介catch表达式调整 JDK 7中,单个catch块可以处理多个异常类型try { ...... } catch(ClassNotFoundException|SQLException ex) { ex.printStackTrace(); }
  • 8. Java7新特性简介catch表达式调整 这种用法是不包括异常的子类型的。比如说,下面这个多个异常的捕获语句就会抛出编译错误:try { ...... } catch (FileNotFoundException | IOException ex) { ex.printStackTrace(); }
  • 9. Java7新特性简介“<>”类型推断运算符 JDK 1.7引入一个新的操作符<>,也被称作钻石操作符,它使得构造方法也可以进行类型推导 。在这之前,你得在对象创建表达式的左右两边同时指定类型,现在你只需要在左边指定就可以了。 JDK 7之前: Map> employeeRecords = new HashMap>(); List primes = new ArrayList(); JDK 7 : Map> employeeRecords = new HashMap<>(); List primes = new ArrayList<>();
  • 10. Java7新特性简介自动资源管理 在JDK 7之前,我们需要使用一个finally块,来确保资源确实被释放掉,不管try块是完成了还是中断了。比如说读取文件或者输入流的时候,我们需要在finally块中关闭它们;而在Java 7里面,你可以使用try-with-resource的特性来自动关闭资源,只要是实现了AutoClosable和Closeable接口的都可以,几乎所有的资源类型都实现了Closeable接口,并重写了close()方法。JDK 7引入了try-with-resource语句,来确保每个资源在语句结束后都会调用AutoClosable接口的close()方法进行关闭。try(BufferedReader reader = new BufferedReader(new FileReader("路径"));) { //... } catch(Exception e) { e.printStackTrace(); }
  • 11. Java7新特性简介NIO 2 在Java7之前,文件的操作一向都比较不便,Java7推出了全新的NIO 2 API,包括java.nio.file包,以及相关的java.nio.file.attibute包,全面支持了文件IO以及对默认文件系统的访问,使得在java.nio.file包下使用Path、Paths、Files、WatchService、FileSystem等常用类型可以很好的简化开发人员对文件管理的编码工作。
  • 12. Java7新特性简介NIO 2 Path接口常用方法如下:方法名称 方法返回类型 方法描述getNameCount() int 获取当前文件节点数getFileName() java.nio.file.Path获取当前文件名称getRoot() java.nio.file.Path 获取当前文件根目录getParent() java.nio.file.Path 获取当前文件上级关联目录Path path = Paths.get("C:/windows"); System.out.println("文件节点数:" + path.getNameCount()); System.out.println("文件名称:" + path.getFileName()); System.out.println("文件根目录:" + path.getRoot()); System.out.println("文件上级关联目录:" + path.getParent());
  • 13. Java7新特性简介NIO 2 Files类型常用方法如下:方法名称 方法返回类型 方法描述createFile()java.nio.file.Path在指定的目标目录创建新文件delete()void删除指定目标路径的文件或文件夹copy()java.nio.file.Path 将指定目标路径的文件拷贝到另一个文件中move() java.nio.file.Path 将指定目标路径的文件转移到其他路径下,并删除源文件try { Files.copy(Paths.get("C:/a.txt"), Paths.get("C:/b.txt")); } catch (IOException e) { e.printStackTrace(); }
  • 14. Java7新特性简介NIO 2 使用WatchService类型实现文件监控/* 监控目标路径 */ Path path = Paths.get("C:/"); try { /* 创建文件监控对象 */ WatchService watchService = FileSystems.getDefault().newWatchService(); /* 注册文件监控的所有事件类型 */ path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY); /* 循环监测文件 */ while (true) { WatchKey watchKey = watchService.take(); /* 迭代触发事件的所有文件 */ for (WatchEvent event : watchKey.pollEvents()) System.out.println(event.context().toString() + " 事件类型:" + event.kind()); if (!watchKey.reset()) return; } } catch (Exception e) { e.printStackTrace(); }
  • 15. Java7新特性简介G1垃圾回收器 JDK7中引入了一个新的垃圾回收器,G1,它是Garbage First的缩写。G1回收器优先回收垃圾最多的区域。为了实现这个策略它把堆分成了多个区域,就好比Java 7之前分成三个区域那样(新生代,老生代和持久代)。G1回收器是一个可预测的回收器,同时对那些内存密集型的程序它还能保证较高的吞吐量。
  • 16. 本章重点小结数值常量对下划线支持 声明二进制常量 Switch对String的支持 catch表达式调整 “<>”类型推断运算符 自动资源管理 NIO 2 G1垃圾回收器