Java中对象的大小

Java中数据的类型分为8种基本类型和非基本类型,这里要说的就是非基本类型的Java对象的大小

1.先说一下java中的8种基本类型的大小:

ava数据类型     字节  表示范围
byte(字节型)     1  -128127 
short(短整型)    2 -3276832767 
int(整型)        4  -21474836482147483647 
long(长整型)     8  -9223372036854775808 ~ 9223372036854775807 
float(浮点型)    4  -3.4E383.4E38 
double(双精度型) 8  -1.7E3081.7E308 
char(字符型)     2  从字符型对应的整型数来划分,其表示范围是065535 
boolean(布尔型)  1  truefalse

2.上面展示了java中最常用的基本类似的数据大小,还有就是我们日常用到最多的String的大小:
String内部使用一个char[]数组来存放字符串的内容,数组下标是整型

String的构造方法:String(char value[], int offset, int count)

整型(Java规定32位)表示范围是2G,也就是说,Java数组最大的长度是2G,即字符串不能超过2G个字符。

3.下面再介绍一下java中的对象的大小:
在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小:

Object ob = new Object();

在java的栈中,一个对象只对应了一个4btye的引用,所有上面的ob对象的大小就是8byte(堆中)+4byte(栈中)
所有的Java非基本类型的对象都需要默认继承Object对象,因此不论什么样的Java对象,其大小都必须是大于8byte

这里再举个例子:

Class NewObject {
    int count;
    boolean flag;
    Object ob;
}

其大小为:空对象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小(4byte)=17byte。但是因为Java在对对象内存分配时都是以8的整数倍来分,因此大于17byte的最接近8的整数倍的是24,因此此对象的大小为24byte

最后再说一下注意的地方:

 1.java中的8中基本对象的大小是固定的
 2.java中一个空Object类的大小是8byte
 3.Java非基本类型的对象都需要默认继承Object对象,因此其大小都大于8byte
 4.Java在对对象内存分配时都是以8的整数倍来分,不是整数倍的需要找就近的8的整数倍

你可能感兴趣的:(Java,驿站)