本文主要介绍JDK7引入的新特性,主要以代码形式展示出来
import org.junit.Test;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* JDK7 的新特性
*/
public class JDK7_teatures {
/**
* 二进制字面量
* 整数类型例如(byte,short,int,long)能够用二进制来表示了,
* 通过在数字前面加入0b或者0B来标示一个二进制的字面量
*/
@Test
public void test1() {
//一个8位 byte值:
byte aByte = (byte) 0b00100001;
//一个16位short值:
short aShort = (short) 0b1010000101000101;
//一些32位int值:
int anInt1 = 0b10100001010001011010000101000101;
int anInt2 = 0b101;
//B可以是大写也可以是小写.
int anInt3 = 0B101;
//一个64位的'long'值. 注意"L"结尾:
long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;
final int[] phases = {
0b00110001,
0b01100010,
0b11000100
};
final int[] phases1 = {0x31, 0x62, 0xC4, 0x89, 0x13};
}
/**
* 在数字字面量使用下划线,下划线只能出现在数字之间
*/
@Test
public void test2() {
int a = 111_111;
System.out.println(a);
}
/**
* switch可以使用string了
*/
@Test
public void test3() {
switch ("1") {
case "2":
System.out.println("2");
break;
case "1":
System.out.println("1");
}
}
/**
* 实例创建的类型推断,泛型不用声明和创建对象的时候都写了
*/
@Test
public void test4() {
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
//在Java SE 7中,你可以用一组空类型参数(<>)替换构造器的参数类型
Map<String, List<String>> myMap1 = new HashMap<>();
}
/**
* 使用Varargs方法使用不可维护的形式参数时改进了编译器警告和错误
*/
@Test
public void test5() {
List l = new ArrayList<Number>();
List<String> ls = l; // unchecked warning
l.add(0, new Integer(42)); // another unchecked warning
String s = ls.get(0); // ClassCastException is thrown
}
/**
* try-with-resources资源的自动管理
* 注意:这里的类都要求直接或间接实现 Closeable 接口
*/
@Test
public void test6() throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(""))) {
System.out.println(br.readLine());
}
}
/**
* 捕捉多个异常类型和对重新抛出异常的高级类型检查
*/
@Test
public void test7() {
boolean is = true;
try {
if (is) {
throw new IOException();
} else {
throw new SQLException();
}
} catch (IOException | SQLException ex) {
ex.printStackTrace();
}
}
}