jdk1.7新特性详解
开发期间略知jdk1.7的一些特性,没有真正的一个一个得展开研究,而是需要说明再去查,导致最整个新特性不是特别的清楚,这种情况以后得需要改变了,否则就会变成代码的奴隶。现在正好有时间可以细细的研究研究了。文章主要参照oracle jdk1.7的官方地址:https://docs.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html#javase7
二进制字面量
在JAVA SE 7,整数类型例如(byte,short,int,long)能够用二进制来表示了。通过在数字前面加入0b
或者0B
来标示一个二进制的字面量,看下面的例子:
//一个8位'byte'值:
byte aByte = (byte)0b00100001;
//一个16位'short'值:
short aShort = (short)0b1010000101000101;
//一些32位'int'值:
int anInt1 = 0b10100001010001011010000101000101;
int anInt2 = 0b101;
int anInt3 = 0B101; // B可以是大写也可以是小写.
//一个64位的'long'值. 注意"L"结尾:
long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;
二进制字面量可以使数据之间的关系比十六进制或八进制更明显。例如,下面数组的每一个连续数组都是通过一个位循环的。
public static final int[] phases = {
0b00110001,
0b01100010,
0b11000100,
0b10001001,
0b00010011,
0b00100110,
0b01001100,
0b10011000
}
在16进制中,数字之间的关系就不是那么的明显了:
public static final int[] phases = {
0x31, 0x62, 0xC4, 0x89, 0x13, 0x26, 0x4C, 0x98
}
在数字字面量使用下划线
在JAVA SE 7和以后的版本中,下划线字符(_)能够出现在数字字面量的数字之间的任何位置。这个功能可以用来对一个数字字面量根据位数分组,从而提高你代码的可读性。比如,如果你的代码包含一些数字有很多的位数,你能够用下划线字符把位数分为三组,类似于你用一个像逗号或者一个空格作为分隔符。
long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_9999L;
float pi = 3.14_15F;
long hexBytes = 0xFF_EC_DE_5E;
long hexWords = 0xCAFE_BABE;
long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;
下划线只能出现在数字之间,下面的情形不能出现下划线:
- 数字的开头和结尾
- 在浮点数中与小数点相邻
F
或者L
后缀之前- 在预期数字串的位置