瞬態關鍵字transient

謝*川發表於2020-11-05

回顧static關鍵字

靜態關鍵字static優先於非靜態載入到記憶體當中(在使用的過程當中靜態的東西優先於物件進入記憶體)
注意以下是新內容:
被static關鍵字修飾的成員變數不能被序列化,序列化的都是物件,如果被static修飾的話它不屬於物件

舉例示範

public class Person implements Serializable {
    String name = "張三";
    static int age = 18;
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}


public static void main(String[] args) throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:\\d.txt"));
        Object o = ois.readObject();
        ois.close();
        System.out.println(o);
    }

得到的結果如下
在這裡插入圖片描述

但是如果我們想某個成員變數不被顯示出來的同時不讓該變數被共享,那麼我們引入了transient關鍵字

transient關鍵字:瞬態關鍵字

被該關鍵字修飾的成員變數不能被序列化

舉例示範:

public class Person implements Serializable {
    static String name = "張三";

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                '}';
    }

    transient int age = 18;
}


public static void main(String[] args) throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:\\d.txt"));
        Object o = ois.readObject();
        ois.close();
        System.out.println(o);
    }

得到的結果為
在這裡插入圖片描述