java中怎么算一个对象的空间大小

就像 int 型的大小是 4字节

Object流
直接将Object写入或读出
也叫做对象的序列化:把一个Object直接转换成字节流写到硬盘上,或者直接写到网络上去

这里有一个类T:
class T implements Serializable { // 注意,必须要实现Serializable接口,才是可序列化的
int i = 10;
int j = 9;
double d = 2.3;
int k = 15;
}
这个类里面的成员变量3个int,1个double,int是4字节,double是8字节
所以对象的大小绝对不会小于20字节,但是T肯定是从Object类继承,那么继承下来这些内容也
占空间,比如方法什么的,所以肯定要大于20字节了

运行下面这个类:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Test {
public static void main(String[] args) {
T t = new T();
try {
FileOutputStream fos = new FileOutputStream("d:/abc.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(t);
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}

}
}
直接将T对象通过Object流写到了D盘的名为abc.txt的文件里面
一个空文本文件是0字节,找到这个文件以后查看它的属性,我这里是67 字节,
那么这个对象就是67 字节

现在在T类中添加一些其他内容,那么再次输出,字节数肯定就比原来大了,它就是把整个对象转换成
字节,写入了文件,这个应该算是比较好的方式了,但是我们无法特别精确的知道对象中哪些内容各自
占用多少空间,因为那是Java虚拟机的事了,我学的没那么深入,水平有限

当然,把一个对象写进去,也可以读出来:

FileInputStream fis = new FileInputStream("");
ObjectInputStream ois = new ObjectInputStream(fis);
// 当成Object读出来的,强转成T类型
T tReaded = (T)ois.readObject();
System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k);

发现打印出的成员变量的值,还是存进去这个对象的值
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-05
Java中没有函数计算这个东西,它是固定的,不像C语言中的sizeOf()可以计算。
你在网上查一下记住就行了
第2个回答  2013-07-05
有函数是输出那个大小的,你自己去帮助里面查下就知道了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网