下划线在数字表达中的应用.
在 Java se 7中可以使用下划线(_)来分组表示数字.
int x1=2323_234_21;
double x3=232_2.324_12F;
其在以下位置不可以使用:
1.数字字面的开头与结尾;
2.小数点前和后;
3.表示类型的L或F前或后.
4.表示数进制的前和中间;
如下:
float pi1 = 3_.1415F; // Invalid; cannot put underscores adjacent to a decimal point
float pi2 = 3._1415F; // Invalid; cannot put underscores adjacent to a decimal point
long socialSecurityNumber1
= 999_99_9999_L; // Invalid; cannot put underscores prior to an L suffix
int x1 = _52; // This is an identifier, not a numeric literal
int x2 = 5_2; // OK (decimal literal)
int x3 = 52_; // Invalid; cannot put underscores at the end of a literal
int x4 = 5_______2; // OK (decimal literal)
int x5 = 0_x52; // Invalid; cannot put underscores in the 0x radix prefix
int x6 = 0x_52; // Invalid; cannot put underscores at the beginning of a number
int x7 = 0x5_2; // OK (hexadecimal literal)
int x8 = 0x52_; // Invalid; cannot put underscores at the end of a number
int x9 = 0_52; // OK (octal literal)
int x10 = 05_2; // OK (octal literal)
int x11 = 052_; // Invalid; cannot put underscores at the end of a number
泛型声明的改进
在JAVA Se 7及以后的版本,声明泛型时泛型类可以使用(<>)来声明,编译器会自动根据上下文件取适合的类型.如下例:
Java se 7以前:
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
Java se 7及以后:
Map<String, List<String>> myMap = new HashMap<>();
但是下面的的方式还是会出没有检查的转换警告;
Map<String, List<String>> myMap = new HashMap();
下面使用是不允许的:
List<String> list = new ArrayList<>();
list.add("A");
// The following statement should fail since addAll expects
// Collection<? extends String>
list.addAll(new ArrayList<>());