本文总结了三个不容易被注意到的三个数据类型的特殊用法,
1. 二进制
java7以后,可以用前缀”0b“表示二进制数,也可以在数字之间,为数字加下划线分割,方便阅读。
例如:
0b1110_1010_0101=0b111010100101
2. 浮点数
浮点数不适用于金融等精确计算中,原因是浮点值采用二进制系统表示,而二进制系统无法精确表示1/10,
正如十进制无法精确表示1/3一样。
例如:2.0-1.1=0.9,下面却输出0.8999999999999999
所以应该使用BigDecimal类,它的subtract方法表示减法运算。
3.char类型
char类型用于表示单个字符,通常用来表示字符常量。例如'A'是编码为65对应的字符常量。
Unicode编码单元可以表示为16进制的值,其范围为:\u0000 ~ \uffff。
详细注释与完整代码如下(JDK1.8运行测试通过):
<strong><span style="font-size:18px;">public class JSETest
{
public static void main(String\u005B\u005D args)
{
/*1.
二进制的表示
java7以后,可以用前缀”0b“表示二进制数,也可以在数字之间,为数字加下划线分割,方便阅读。
例如:
111110101(二进制)=501(十进制)
下面直接调用输出语句,会把括号内的数字转为十进制整型输出
*/
System.out.println(11110101); //输出: 111110101
System.out.println(0b1110_1010_0101); //输出: 3749
System.out.println(0b1110_1010_0101); //输出: 3749
/* 2.浮点数
浮点数不适用于金融等精确计算中,原因是浮点值采用二进制系统表示,而二进制系统无法精确表示1/10,
正如十进制无法精确表示1/3一样。
例如:2.0-1.1=0.9,下面却输出0.8999999999999999
所以应该使用BigDecimal类,它的subtract方法表示减法运算
*/
System.out.println(2.0-1.1); //输出: 0.8999999999999999
/*BigDecimal的valueOf方法API:
Translates a double into a BigDecimal,
using the double's canonical string representation provided by the Double.toString(double) method. */
java.math.BigDecimal bd1=java.math.BigDecimal.valueOf(2.0);
java.math.BigDecimal bd2=java.math.BigDecimal.valueOf(1.1);
System.out.println(bd1.subtract(bd2)); //输出: 0.9
/*3.char类型
char类型用于表示单个字符,通常用来表示字符常量。例如'A'是编码为65对应的字符常量。
Unicode编码单元可以表示为16进制的值,其范围为:\u0000 ~ \uffff。
例如main方法参数里的[和],可以用\u005B和\u005D表示。
*/
System.out.println(\u0022 这里双引号里的内容哦 \u0022); //转义序列:\" 双引号 Unicode值:\u0022
}
}
</span></strong>