Switch
jdk1.7的switch语句增加了对字符串类型的支持。其实现的原理是通过字符串的hash值来比较的,代码示例如下:
1 String name = "KiDe"; 2 // Welcome the owner! 3 switch (name) { 4 case "KiDe": 5 System.out.println("Welcome the owner!"); 6 break; 7 default: 8 System.out.println("Welcome the other!"); 9 }
不过需要注意的是,即使新增了对字符串的支持。但是如果该字符串有特殊含义且多次在代码中被使用,还是应该使用enum类型来代替直接的字符串switch。
数字
jdk1.7之后对数字的改动主要包括两方面,
一是对二进制字面常量的支持,同数字前面加0表示八进制,加0X表示16进制,前面加0B表示二进制,代码示例如下:
1 // 支持二进制字面常量(以0b或者0B开始) 2 System.out.println(0b00011); // 3 3 System.out.println(0B10011); // 19
二是出于对数字易读性的考虑,支持数字之间以"_"分隔,而不影响数字原来的值。出于对编译器实现简单的考虑,下划线的添加地方也很讲究,不支持将下划线添加在数字开头或者末尾,也不支持将下划线添加在数字的小数部分开头。这样编译器在处理的时候,只需将下划线抹掉,就能得到原来的数字。
1 // 数字之间支持以下划线来区分,其中的下划线可以是一个也可以时多个。 2 int a = 1_23_2__34; 3 float b = 1_112.1__1_2f; 4 System.out.println(a); // 123234 5 System.out.println(b); // 1112.112
通过这个改动其实可以发现,java的发展也在越来越向人性化发展,再不影响运行效率的前提下,为其他可扩展的方面做了很多努力。