Java基本数据类型
类型 | 存储字节 | 范围 | 其他 |
---|---|---|---|
byte | 1 | -128~127 | |
short | 2 | -32768~32767 | |
int (默认整型) | 4 | -2147483648~2147483647 | |
long | 8 | -9223372036854775808~9223372036854775807 | 长整型有一个后缀L或者l |
float | 4 | 单精度 | 后缀F或者f |
double(默认浮点型) | 8 | 双精度 | 默认为double,也可以加D或者d |
char | 2 | ||
boolean | 1 |
- 可以借助JOL内存分析工具查看:
OFFSET SIZE TYPE DESCRIPTION
0 12 (object header)
12 4 int ObjectAnalysis.i
16 8 long ObjectAnalysis.l
24 8 double ObjectAnalysis.d
32 4 float ObjectAnalysis.f
36 2 short ObjectAnalysis.s
38 2 char ObjectAnalysis.c
40 1 byte ObjectAnalysis.b
41 1 boolean ObjectAnalysis.flag
常用进制
- 十六进制
- 前缀0x或0X
- 八进制
- 前缀0
- 二进制
- 只有0和1表示的数
- 从JDK7开始,可以使用0b或者0B写二进制数
数据转换操作
自动类型转换
- 实线表示无信息转换丢失,虚线表示可能有精度损失
- 两个操作数,有一个double,另一个会转换为double
- 否则,如果有一个float,另一个转float
- 否则,如果有一个long,另一个转为long
- 否则,都转换int类型
按照范围由大到小
强制类型转换
由范围大的转范围小的,比如double转int,那么需要通过强制类型转换操作
double d = 1.0;
int a = (int)d;