Java基礎之instanceof和transient關鍵字用法

instanceof

用於檢測指定對象是不是某個類(本類、父類、子類、接口)的實例。Java中的instanceof也稱爲類型比較運算符,由於它將類型與實例進行比較。 返回true或false。 若是對任何具備null值的變量應用instanceof運算符,則返回false。用法:Boolean result = object instanceof class;html

本類對象必定是本類的實例,若是本類有父類或接口,則此對象也是父類或接口的實例;若是本類有子類,則此對象不是子類的實例。若是父類對象引用子類的實例,則此對象是父類到子類之間的繼承鏈上全部類的實例。學習

例如:若是三個類存在如下繼承關係:C繼承B,B繼承A,即A<-B<-C,spa

對象 C c=new C();,則c instanceof C爲true;c instanceof B爲true;c instanceof A爲true;htm

對象A a=new C();,則a instanceof C爲true;a instanceof B爲true;a instanceof A爲true;對象

對象A a=new A();,則a instanceof C爲false;a instanceof B爲false;a instanceof A爲true;blog

下面是instanceof的經常使用用法:繼承

boolean b1 = "Sting" instanceof Object;接口

b1爲true 由於String是Object的子類生命週期

boolean b2 = new String() instanceof String;內存

b2爲true

boolean b3 = new Object() instanceof String;

b3爲false Object是父類

boolean b4 = 'A' instanceof Character;

編譯不經過 ‘A’在此處視爲基本數據類型char,instanceof操做符只能用做對象的判斷

boolean b5 = null instanceof String;

b5爲false 這是instanceof 特 有 的 規 則 : 若左操做數爲null, 結果就直接返回false, 再也不運算右操做數是什麼類。

boolean b6 = (String)null instanceof String;

b6爲false 即便類型轉換仍是個 null

boolean b7 = new Date() instanceof String;

編譯不經過 instanceof 操做符的左右操做數必須有繼承或實現關係,不然編譯出錯。

transient

此關鍵字用於指定一個變量不能被序列化。一個對象只要實現了Serializable接口,這個對象就能夠被序列化。咱們沒必要關心具體序列化的過程,只要這個類實現了Serilizable接口,這個類的全部屬性和方法都會自動序列化。然而在實際開發過程當中,咱們經常會遇到某個類的有些屬性須要序列化,而其餘屬性不須要被序列化,這些不須要被序列化的變量就能夠加上transient關鍵字。換句話說,這個字段的生命週期僅存於調用者的內存中而不會寫到磁盤裏持久化。

transient關鍵字爲咱們提供了便利,你只須要實現Serializable接口,將不須要序列化的屬性前添加關鍵字transient,序列化對象的時候,這個屬性就不會序列化到指定的目的地中。

一旦變量被transient修飾,變量將再也不是對象持久化的一部分,該變量內容在序列化後沒法得到訪問。

transient關鍵字只能修飾變量,而不能修飾方法和類。注意,本地變量是不能被transient關鍵字修飾的。變量若是是用戶自定義類變量,則該類須要實現Serializable接口。

被transient關鍵字修飾的變量再也不能被序列化,一個靜態變量無論是否被transient修飾,均不能被序列化。

被transient關鍵字修飾的變量某些狀況也能夠被序列化。在Java中,對象的序列化能夠經過實現兩種接口來實現,若實現的是Serializable接口,則全部的序列化將會自動進行,若實現的是Externalizable接口,則沒有任何東西能夠自動序列化,須要在writeExternal方法中進行手工指定所要序列化的變量,這與是否被transient修飾無關。

        轉載請註明出處 https://www.cnblogs.com/Y-oung/p/9113323.html

        工做、學習、交流或有任何疑問,請聯繫郵箱:yy1340128046@163.com

相關文章
相關標籤/搜索