根据JSR 334,JDK 7添加了数个语法方面的新特性,它们是:
1. switch可以消化String了。
比如:
public static void switchString(String s){
switch (s){
case "db": ...
case "wls": ...
case "idm": ...
case "soa": ...
case "fa": ...
default: ...
}
}
2. 新的整数字面表达方式 - "0b"前缀和"_"连数符,提升程序员的幸福感。
a. 表示二进制字面值的前缀, 0b:
比如以下三个变量的值相同:
byte b1 = 0b00100001; // New
byte b2 = 0x21; // Old
byte b3 = 33; // Old
b. 用下划线连接整数提升其可读性,自身无含义,不可用在数字的起始和末尾:
long phone_nbr = 021_1111_2222;
3. 简化了泛型对象创建的语法 - "菱形 new",以下两个语句等价:
ArrayList<String> al1 = new ArrayList<String>(); // Old
ArrayList<String> al2 = new ArrayList<>(); // New
4. 为所有的reflect操作异常找了个新爸爸 - ReflectOperationException,孩儿们是:
ClassNotFoundException,
IllegalAccessException,
InstantiationException,
InvocationTargetException,
NoSuchFieldException,
NoSuchMethodException
5. catch有了多重捕获功能,也玩起了包养的勾当,以下代码心领神会:
try{
// code
}
catch (SQLException | IOException ex) {
// ...
}
6. 异常精确重抛 - 重抛时自动造型为子类,有点半主动制导武器的style:
public void test() throws NoSuchMethodException, NoSuchFieldException{ // 子类
try{
// code
}
catch (RelectiveOperationException ex){ // 父类
throws ex;
}
}
7. 发明了try()结构 - Try with Resources,能够自动接住异常并关闭资源(所谓的资源需要利用新的java.lang.AutoCloseable接口),注意以下代码中try后面跟的是"("不是"{":
try(BufferedReader br = new BufferedReader(new FileReader("/home/oracle/temp.txt"))){
... br.readLine() ...
}
try-with-resources语句可以带catch,也可以向上例一样一个catch也没有。
包光磊
Todd
1. switch可以消化String了。
比如:
public static void switchString(String s){
switch (s){
case "db": ...
case "wls": ...
case "idm": ...
case "soa": ...
case "fa": ...
default: ...
}
}
2. 新的整数字面表达方式 - "0b"前缀和"_"连数符,提升程序员的幸福感。
a. 表示二进制字面值的前缀, 0b:
比如以下三个变量的值相同:
byte b1 = 0b00100001; // New
byte b2 = 0x21; // Old
byte b3 = 33; // Old
b. 用下划线连接整数提升其可读性,自身无含义,不可用在数字的起始和末尾:
long phone_nbr = 021_1111_2222;
3. 简化了泛型对象创建的语法 - "菱形 new",以下两个语句等价:
ArrayList<String> al1 = new ArrayList<String>(); // Old
ArrayList<String> al2 = new ArrayList<>(); // New
4. 为所有的reflect操作异常找了个新爸爸 - ReflectOperationException,孩儿们是:
ClassNotFoundException,
IllegalAccessException,
InstantiationException,
InvocationTargetException,
NoSuchFieldException,
NoSuchMethodException
5. catch有了多重捕获功能,也玩起了包养的勾当,以下代码心领神会:
try{
// code
}
catch (SQLException | IOException ex) {
// ...
}
6. 异常精确重抛 - 重抛时自动造型为子类,有点半主动制导武器的style:
public void test() throws NoSuchMethodException, NoSuchFieldException{ // 子类
try{
// code
}
catch (RelectiveOperationException ex){ // 父类
throws ex;
}
}
7. 发明了try()结构 - Try with Resources,能够自动接住异常并关闭资源(所谓的资源需要利用新的java.lang.AutoCloseable接口),注意以下代码中try后面跟的是"("不是"{":
try(BufferedReader br = new BufferedReader(new FileReader("/home/oracle/temp.txt"))){
... br.readLine() ...
}
try-with-resources语句可以带catch,也可以向上例一样一个catch也没有。
包光磊
Todd