Java基本数据类型拓展
1、整数拓展:
1.1进制
-
二进制:用0b开头表示,使用‘0’和‘1’表示
-
十进制:使用‘0’~‘9’表示
-
八进制:用0开头表示,使用‘0’~‘7’表示
-
十六进制:用0x开头表示,使用‘0’-‘9’,以及字符‘A’-'F’来表示16个值(其中字符’A‘~’F’可以为大写,也可以为小写)
-
int i = 10; int i1 = 0b10;//二进制 int i2 = 010;//八进制 int i3 = 0x10;//十六进制 System.out.println(i); System.out.println(i2); System.out.println(i3); 结果: 10 2 8 16
1.2进制之间的转换
-
十六进制数转二进制数:
通过展开每个十六进制数,将它转换位二进制数(一对一)
例如:十六进制 1 7 3 A 4 C 二进制 0001 0111 0011 1010 0100 1100 -
二进制数转十六进制数:
首先把二进制数从右向左分为每4位一组,每一组对应一个十六进制数。
注意:当最左边一组数的个数没有4个,则在前面补0。
例如:二进制 11 1100 1010 1101 1011 0011 十六进制 3 C A D B 3 -
十进制数转十六进制数:
反复地用16除十进制数。例如
314156=19634*16+12 19634=1227*16+2 1227=76*16+11 76=4*16+12 4=0*16+4 取最后一位: 十六进制数为:0x4CB2C
注意:
1、要把类似‘10’-‘15’数字写成十六进制的’A’~‘F’
2、读数要从最后一行开始倒着读。
2、浮点数拓展
-
浮点数存在精度丢失问题
-
float f = 0.1f; double d = 1.0/10; System.out.println(f==d); float d1 = 1234567214325354f; float d2 = d1+1; System.out.println(d1==d2); 结果: false true
-
-
原因:
- 浮点数的存储位数是有限,表示的数是离散,且存在舍入误差。它所表示的数只是用大约、接近而不是等于。
- 在进行数据比较时最好不用浮点数,浮点数更加不适合运用在金融计算领域,但是可以用BigDecimal(数学工具类)
3、字符拓展
- 强制转换:
-
如:char类型转换为int类型
-
(int)字符变量名
-
所有字符本质还是数字
-
转义字符:
-
\t:制表符
-
\n:换行
-
\f:换页
-
\r:回车
-
\\:代表一个反斜杠’\’
-
\’:代表一个单引号
-
\’’:代表一个双引号
-
\?:代表一个问号
-
\0:空字符(NULL)
-
\ddd:1到3位八进制数所代表的任意字符
-
\xhh:十六进制所代表的任意数
-
-
4、布尔值拓展
boolean flag = true;
if (flag == ture);
if (flag);//两条if语句的结果一样,但是第二条比较精简