Java中JDK 1.7和JDK 1.8新特性问题

JDK 1.7的部分新特性如下:

 

1)switch可以接受Stringe类型。随着Java语言的发展,在java7中,开始支持String类型。

public class Switch {
	public void test(String str) {
		switch (str) {
		case "computer":
			System.out.println("computer");
			break;
		case "book":
			System.out.println("book");
			break;
		case "phone":
			System.out.println("phone");
			break;
		default:
			System.out.println("default");
			break;
		}
	}
}

注意:本质上说,switch对字符串的支持,实质上还是对int类型值的匹配,原理如下:通过对case后面的Stirng对象调用hashCode()方法,得到一个int类型的hash值,然后用这个hash值来唯一匹配case。String变量不能为null,同时switch的case子句中使用的字符串也不能为null。

2)可以在catch代码块中捕获多个异常类型。

try {
	//可能会抛出Exception1和Exception2异常的代码
}catch(Exception1 | Exception2 3) {
	//处理异常的代码
}

3)对数值字面量进行了改进。

(1)增加了二进制字面量的表示(0B001、0b111)。整数类型(例如byte、short、int、long等)也可以使用二进制数来表示。

(2)在数字中可以添加分隔符,例如123_456,下划线只能被用在数字中间,编译的时候这些下划线会被编译器去掉。好处:避免了一些难以观察代码来发现的细微错误。

(4)使用范型的时候增加了类型推断机制。

在Java7以前,实例化一个HashMap对象的写法如下:

    Map map = new HashMap();

在Java7引入了类型推断机制,实例化一个HashMap对象的写法如下:

    Map map = new HashMap<>();

(5)增加了try-with-resources语句,确保了每个资源都在生命周期结束后被关闭,故在读取文件结束后,不需要显示的调用close方法。

try (InputStream fis = new FileInputStream("input.text");){
	while(fis.read() != -1) {
		System.out.println(fis.read());
	}
}catch(Exception e) {
	e.printStackTrace();
}

(6)增加了fork/join框架用来增强对处理多核并行计算的支持,应用场景为:一个应用程序能被分解成多个子任务,并且组合多个子任务分别就能获取最终的答案,在这种情况下,就可以使用fork/join框架。

 

 

 

JDK1.8的部分新特性:

 

(1)增加了对Lambda表达式的支持。Lambda表达式是一个匿名函数。

(2)接口增加了方法默认实现和静态方法。JDK1.8通过使用关键字default可以给接口中的方法添加默认实现。

(3)方法引用。方法引用指的是可以直接引用java类或对象的方法。

(4)注解。

(5)类型推测。

(6)参数名字。JDK1.8通过在编译的时候增加-parameters选项,以及增加反射API与Parameter.getName()方法实现了获取方法参数名的功能。

(7)新增Stream类。把函数式的编程风格引入到java语言中。

(8)日期新特性。

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java基础50题)