您的位置:首页 > 编程语言 > Java开发

Java中对象的大小

2017-08-20 12:27 176 查看
Java中数据的类型分为8种基本类型和非基本类型,这里要说的就是非基本类型的Java对象的大小

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

ava数据类型     字节  表示范围
byte(字节型)     1  -128~127
short(短整型)    2 -32768~32767
int(整型)        4  -2147483648~2147483647
long(长整型)     8  -9223372036854775808 ~ 9223372036854775807
float(浮点型)    4  -3.4E38~3.4E38
double(双精度型) 8  -1.7E308~1.7E308
char(字符型)     2  从字符型对应的整型数来划分,其表示范围是0~65535
boolean(布尔型)  1  true或false


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的整数倍
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息