数据类型拓展
各个类型所占字节大小
参考了这篇文章
-
byte: 1字节 默认0 范围: -128 – 127
-
short: 2字节 默认0 范围:-32768 – 32767
-
char: 2字节 默认’\u0000’ 范围: ‘\u0000’ – ‘\uffff’
-
int: 4字节 默认0 范围 -2147483648 – 2147483647
-
float: 4字节 默认 0.0f
-
long: 8字节 默认0
-
double 8字节 默认0.0d
整形
- 十进制 普通的数字表示的就是十进制数字
- 二进制 数字前面加上 0b(零不是字母o) 或者 0B 表示二进制
- 八进制 数字前面加上 0 (零不是字母o)表示八进制
- 十六进制 数字前面加上 0x(零不是字母o)或者 0X 表示十六进制
例:
int i1 = 10;
int i2 = 0b10;
int i3 = 0B10;
int i4 = 010;
int i5 = 0x10;
int i6 = 0X10;
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println(i5);
System.out.println(i6);
结果:
JDK7新特性,数字之间可以用下划线分割
int a = 10_0000_0000;
浮点数
- 数字比较最好不要用浮点数进行比较
- 银行业务等不用浮点数表示,用BigDecimal这个类
例1:
float f = 0.1f;
double d1 = 1.0/10;
double d2 = 0.1;
System.out.println(f==d1);
System.out.println(f==d2);
System.out.println(d1==d2);
结果:
个人猜测是因为float和double这两个数据类型的存储方式不同导致本来应该看上去相同的数字但并不相同
例2:
float a = 32423435342957473925743f;
float b = a+1;
System.out.println(a==b);
结果:
因为a超过了float能够表示的数据范围
字符
Java中的字符是Unicode编码的,其表示范围由 ‘\u0000’ 到 ‘\uffff’