1. 二进制表达式:
JDK7 开始,可以使用二进制来表达整数,语法为在二进制数前加 0b或0B。
byte b = 0b0010;
int i = 0B0010;
long l = 0b0010;
2. 数字可以用下划线来分隔:
下划线只能出现在数字中间。
int ii = 10_0000_0000;
long ll = 0xFFFF_FFFF_FFFFl;
3. switch语句可以用字符串来判断:
private static String getValue(String s)
{
String str = "";
switch(s)
{
case "zhangsan":
str = "xx";
break;
case "lisi":
str = "yy";
break;
default:
str = "unknown";
}
return str;
}
4. 编译器会自动匹配范型实例的类型:
例如Map:
Map<String, Map<String, List<String>>> hashMap = new HashMap<String, Map<String, List<String>>>();
可以使用:
Map<String, Map<String, List<String>>> hashMap = new HashMap<>();
来简化。
5. try-with-resources语句:
jdk7 中提供了新的try-with-resources语句,用来自动关闭资源。该资源必须实现AutoCloseable接口。
例如:
private static String readFirstLine(String path) throws FileNotFoundException, IOException
{
try (BufferedReader reader = new BufferedReader(new FileReader(path)))
{
return reader.readLine();
}
}
该语句还可以同时处理多个资源,资源之间用;分割。可以有catch,finally语句块:
private static String readFirstLine(String path)
{
try (BufferedReader reader = new BufferedReader(new FileReader(path));
BufferedReader reader2 = new BufferedReader(new FileReader(path)))
{
return reader.readLine();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
}
return null;
}
6. catch语句可以一次catch多个Exception
private static String readFirstLine(String path)
{
try (BufferedReader reader = new BufferedReader(new FileReader(path));
BufferedReader reader2 = new BufferedReader(new FileReader(path)))
{
return reader.readLine();
}
catch(NullPointerException | IOException e)
{
e.printStackTrace();
}
return null;
}
当重新抛出多个异常时, 不需要在定义详细的异常类型,只需要在方法定义的时候声明需要抛出的类型即可。