输出JavaBean对象在内存中的大小

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字节了
运行下面这个类:
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);


发现打印出的成员变量的值,还是存进去这个对象的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值