本文主要是介绍129-transient关键字 瞬态关键字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
static静态关键字:静态关键字优先于非静态加载到内存中(静态优先于对象进入到内存中) 被static修饰的成员变量不能被序列化因为序列化的都是对象private static int age;oos.writeObject(new Person("TT",18));System.out.println(o); //Person{name='null', age=0}为什么输出0 静态的是不能被序列化的transient关键字:瞬态关键字被transient修饰的成员变量不能被序列化(不能以对象流被ObjectInputStream和ObjectInputStream的形式读取和写入) 跟上面static作用是一样的
Person类
public class Person implements Serializable { //序列化和反序列化的类要实现标记型接口private static String name; 注意这里加了静态关键字staticprivate transient int age; 注意这里加了瞬态关键字transient
先序列化:写入对象 output
public class Demo01ObjectOutputStream {public static void main(String[] args) throws IOException {// 1、创建ObjectOutputStream对象,构造方法中传递字节输出流ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\百度网盘下载\\a.txt"));// 2、使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中oos.writeObject(new Person("TT",18)); //二进制存储无法直接看// 3、释放资源oos.close();}
}
反序列化 读取对象 input
public class Demo02ObjectInputStream {public static void main(String[] args) throws IOException, ClassNotFoundException {//1、创建ObjectInputStream对象,构造方法中传递字节输入流ObjectInputStream ois= new ObjectInputStream(new FileInputStream("D:\\百度网盘下载\\a.txt"));//2、使用ObjectInputStream对象中的方法readObject读取保存对象的文件Object o = ois.readObject();// 3、释放资源ois.close();// 4、使用读取出来的对象(打印)System.out.println(o);//Person{name='TT', age=18}Person p = (Person)o; //强制转换为Person类System.out.println(p.getName()+p.getAge());//TT18}
}
输出:
Person{name='null', age=0}
null0
这篇关于129-transient关键字 瞬态关键字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!