JDK7开始为了提高代码可读性,对数值字面量做了一些调整:
-
可以用二进制来表示整数(byte、short、int、long)并进行赋值,以方便被编译器解析
-
下划线字符’_'能够出现在数值字面量的数字之间的任何位置
这个功能可以用来对整型、浮点型 数值字面量根据位数分组,提高数值可读性
public static void main(String[] args) {
int a = 1_0000_0000;
//下划线不会输出,只是为了增强对数值的阅读性
System.out.println("a = " + a);
//结果: a = 100000000
int b = 1024_2048;
System.out.println("b = " + b);
//结果: b = 10242048
//在jdk7中提供了以'0b'或'0B'开头的二进制整数类型数值表达方式
int c = 0b00_0001; //表示二进制的 '1'
System.out.println("c = " + c);
//结果: c = 1
//这种书写方法与上面的书写方法效果完全相同,程序员编写时更加清晰而已.
//0b开头代表二进制数,因为int 为四字节,每个字节八位,所以最多不能超过32位。
int d = 0b000_0000_0000_0000_0000_0000_0000_0000_1;
System.out.println("d = " + d);
//结果: d = 1
//一个9位'byte'值,但是前几位是‘0’,大小没超过该数值范围,不需要强转
//byte数值范围一字节,每字节八位,最多不能超过八位。
byte e = 0b00000_0001;
System.out.println("e = " + e);
//结果: e = 1
//一个64位的'long'值. long数值范围内可以不用'L'或'l'结尾:
long f = 0b0000_0001L;
System.out.println("f = " + f);
//结果: f = 1
//数字'0'开头表示八进制,打印输出默认十进制
int g = 010;
System.out.println("g = " + g);
//结果: g = 8
//数值以'0x'或'0X'开头表示十六进制数值。(打印输出默认十进制)
int h = 0x0001;
System.out.println("h = " + h);
//结果: h = 1
int add = 1_0000 + 10;
System.out.println("add = " + add);
//结果: add = 10010
int subtract = 1_0000 - 10;
System.out.println("subtract = " + subtract);
//结果: subtract = 9990
int multiply = 1_0000 * 10;
System.out.println("multiply = " + multiply);
//结果: multiply = 100000
int divide = 1_0000 / 10;
System.out.println("divide = " + divide);
//结果: divide = 1000
//浮点类型默认为double类型,如需使用其他浮点类型需要在尾部添加'F'或'f'强转(float)
//float可能会损失精度
double pi = 3.14_15_92_65_36;
System.out.println("pi = " + pi);
//结果: pi = 3.1415926536
double height = 8_8_4_8.23;
System.out.println("height = " + height);
//结果: 8848.23
//基本类型转换
float i = (float) 0.1;
//尾部加'f'或'F'强制类型转换
float j = 0.1f;
System.out.println("i = " + i);
//结果: i = 0.1
System.out.println("j = " + j);
//结果: j = 0.1
}