java基本类型对齐
1、Java 基本数据类型和精度
整数数据类型
关键字 | 描述 | 大小 | 格式 |
---|---|---|---|
byte | 字节长度整数 | 8 位二进制补码 | 从 +127 到 -128 |
short | 短整型 | 16 位二进制补码 | 从 +32767 到 -32768 |
int | 整数 | 32 位二进制补码 | 从 +2147483647 到 -2147483648 |
long | 长整型 | 64 位二进制补码 | 从 +9223372036854775807 到 -9223372036854775808 |
实数数据类型
关键字 | 描述 | 大小 | 格式 |
---|---|---|---|
float | 单精度浮点 | 32 位 IEEE 754 | 从 3.4028235E38 到 1.4E-45 |
double | 双精度浮点 | 64 位 IEEE 754 | 从 1.7976931348623157E308 到 4.9E-324 |
其他数据类型
关键字 | 描述 | 大小/格式 | |
---|---|---|---|
char | 单字符 | 16 位 Unicode 字符 | |
Boolean | 布尔值(true 或 false) | true 或 false |
2、基本数据类型按照下列顺序进行对齐
double、long
int、float
short、char
boolean、byte
3、Sun java虚拟机规定:
出数组外的所有对象都包含一个长度为双字的header,一个长度为单字的flags,一个指向对应类引用的单字字段。当用new Object()创建一个对象时,堆上会为其分配8个字节的内存空间。
对一个继承Object的类来说,在8个字节后面,类的各个属性在堆内存上会按照一定的规则对齐,但并不按照他们的声明顺序对齐。
首先基本是基本类型安装2中的方式对齐;接着,该类所引用其它类的对象也会在堆上进行对齐。JVM会把对象的大小调整为8字节的倍数