static和transient的序列化

@[TOC]static和transient的序列化
序列化的目的就是讲对象按照流的方式写入到硬盘,是对象!对象!对象!静态成员严格意义上来说是属于类的,不属于对象。
对于实现序列化接口的类,可能有写信息不希望被序列化到硬盘,所以就出现了transient关键字,被transient修饰的属性,仅仅存在于当前程序的内存中,程序关闭就消失。
satic不能序列化,
transient修饰的属性不能被序列化,一些敏感信息例如银行卡密码等
反序列化:
当ObjectInputStream读取文件时候,会先读取序列化对象的class文件,如果发现文件序列化id和class序列化id不一致,InvalidClassException未知类异常,可以将序列号设置成final
jdkj:ava version "1.8.0_131
代码----
package cn.jpa;

import java.io.*;

class Person implements Serializable {
public static void main(String[] args) throws Exception {
Person xm = new Person(“xm”, 99);
xm.staticInt = 2;
xm.staticStr = “staticStr”;
xm.trans=1000;
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“d:\p.txt”));
oos.writeObject(xm);
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(“d:\p.txt”));
Object o = ois.readObject();
System.out.println(o);
}

private static final long serialVersionUID = 1L;
private String name;
//private static int age;
public transient int trans;
public int age;
public static String staticStr1 = "staticStr1";
public static String staticStr;
public static int staticInt1 = 1;
public static int staticInt;

public Person() {
}

public Person(String name, int age) {
    this.name = name;
    this.age = age;
}

@Override
public String toString() {
    return "Person{" +
            "name='" + name + '\'' +
            ", staticInt1=" + staticInt1 +
            ", staticInt=" + staticInt+
            ", staticStr1=" + staticStr1 +
            ", staticStr=" + staticStr +
            ", trans=" + trans +
            ", age=" + age +
            '}';
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

}


结果

如果发现输出的原因是因为同一个jvm在jvm的内存里面有,如果关闭重新运行就没了!在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值