欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jdk1.7新特性、新功能

程序员文章站 2022-04-19 22:00:46
...

首先是模块化特性:现在的Java7也是采用了模块的划分方式来提速,一些不是必须的模块并没有下载和安装,因此在使用全新的Java7的虚拟机的时候会发现真的很快,当虚拟机需 要用到某些功能的时候,再下载和启用相应的模块,这样使得最初需要下载的虚拟机大小得到了有效的控制。同时对启动速度也有了很大的改善。如果你对  OpenJDK的架构比较熟悉,你甚至可以定制JDK的模块。


其次是多语言支持:这里的多语言不是指中文英文之类的语言,而是说Java7的虚拟机对多种动态程序语言增加了 支持,比如:Rubby、  Python等等。对这些动态语言的支持极大地扩展了Java虚拟机的能力。对于那些熟悉这些动态语言的程序员而言,在使用Java虚拟机的过程中同样可 以使用它们熟悉的语言进行功能的编写,而这些语言是跑在功能强大的JVM之上的。


再有是开发者的开发效率得到了改善:Java7通过多种特性来增强开发效率。比如对语言本身做了一些细小的改变 来简化程序的编写,在多线程并发与控制方面:轻量级的分离与合并框架,一个支持并发访问的HashMap等等。通过注解增强程序的静态检查。提供了一些新 的API用于文件系统的访问、异步的输入输出操作、Socket通道的配置与绑定、多点数据包的传送等等。


最后是执行效率的提高,也是给人感觉最真切体验的特性:压缩了64位的对象指针,Java7通过对对象指针由 64位压缩到与32位指针相匹配的技术使得内存和内存带块的消耗得到了很大的降低因而提高了执行效率。此外还提供了新的垃圾回收机制(G1)来降低垃圾回 收的负载和增强垃圾回收的效果。G1垃圾回收机制拥有更低的暂停率和更好的可预测性。


1、switch中可以使用字串,在之前的版本中是不支持在Switch语句块中用String类型的数据的,这个功能在C#语言中早已被支持。

注意:在把字符串传进Switch case之前,别忘了检查字符串是否为Null。

String s = "test";
switch (s) {
case "test" :
     System.out.println("test");
case "test1" :
    System.out.println("test1");
    break ;
default :
    System.out.println("break");
    break ;
}

2、"<>"这个玩意儿的运用List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断。


3、对集合的支持对集合的支持对集合的支持对集合的支持,摒弃了Java集合接口的实现类,如:ArrayListHashSetHashMap。而是直接采用[]{}的形式存入对象,采用[]的形式按照索引、键值来获取集合中的对象

List <String> list = ["item1","item2","item3"];
String item = list[0];
             
Set <String> set = {"item","haha","kaka"};
             
Map <String,Integer> map = {"key" : 1,"key2":2};
int value = map["key"];

4、数值可加下划线

int one_million = 1_000_000;

5、支持二进制文字

你可用作二进制字符前加上 0b 来创建一个二进制类型。

int binary = 0b1001_1001;

6、简化了可变参数方法的调用

      当程序员试图使用一个不可具体化的可变参数并调用一个*varargs* (可变)方法时,编辑器会生成一个非安全操作的警告


7、对资源的自动回收管理

下面的代码看起来有点麻烦 … 不是吗?
BufferedReader br = new BufferedReader(new FileReader(path));
try {
   return br.readLine();
 } finally {
   br.close();
 }    
相信你一定会喜欢下面这种写法。    
 try (BufferedReader br = new BufferedReader(new FileReader(path)) {return br.readLine();})

8简化了可变参数方法的调用


9、一个catch里捕捉多个异常类型

try {
   Here comes your code....
}catch(IOException | NullPointerException | ..........) {
    ....
}

10、新增一些取环境信息的工具方法

File System.getJavaIoTempDir() // IO临时文件夹
     
File System.getJavaHomeDir() // JRE的安装目录
     
File System.getUserHomeDir() // 当前用户目录
     
File System.getUserDir() // 启动java进程时所在的目录

11、Boolean类型反转,空指针安全,参与位运算

Boolean Booleans.negate(Boolean booleanObj)
     
True => False , False => True, Null => Null
     
boolean Booleans.and(boolean[] array)
     
boolean Booleans.or(boolean[] array)
     
boolean Booleans.xor(boolean[] array)
     
boolean Booleans.and(Boolean[] array)
     
boolean Booleans.or(Boolean[] array)
     
boolean Booleans.xor(Boolean[] array)

12、两个char间的equals

boolean Character.equalsIgnoreCase(char ch1, char ch2);

13、安全的加减乘除

int Math.safeToInt(long value)
    
int Math.safeNegate(int value)
    
long Math.safeSubtract(long value1, int value2)
    
long Math.safeSubtract(long value1, long value2)
    
int Math.safeMultiply(int value1, int value2)
    
long Math.safeMultiply(long value1, int value2)
    
long Math.safeMultiply(long value1, long value2)
    
long Math.safeNegate(long value)
    
int Math.safeAdd(int value1, int value2)
    
long Math.safeAdd(long value1, int value2)
    
long Math.safeAdd(long value1, long value2)
    
int Math.safeSubtract(int value1, int value2)


转载于:https://my.oschina.net/u/156964/blog/193923