Java:instanceof 運算子用法說明

Java 的 instanceof 運算子是一個二元運算子,
二元運作子接受兩個參數,通常是用來比較兩個參數間的關係,
常見的二元運算子有 ==, > , < 等等。

圖片來源:http://www.zazzle.com/java+code+gifts

那麼 instanceof 這個運算子是用來比較什麼關係呢?
他的用法是這樣的:objectA instanceof ClassName,
這是要測試某一物件 objectA 是否為某類別 (class)或其子類別 (subclass) 實例 (instance),
或是 objectA 是不是某介面 (interface) 的實作。

當 objectA 屬於該 class (或其衍生類別) 的 instance 就會回傳 true;否則傳回 false。
所以 instanceof 可以被用在繼承的關係中,
需特別注意的是,比較時物件與類別間要有繼承關係,否則會有compile error如:
"myInstanceof.java": Error #: 365 : cannot compare java.lang.Long with java.lang.String

另外要說明的是,我們知道在 Java 中所有的 class 都是繼承 Object 這個 class,
所以理論上任意的 objectA instanceof Object 都應該回傳 true,
這是錯的!當 objectA 指向 null 時這個條件判斷會回傳 false 喔!千萬注意!
另外 Java 中還有基本型別如 int, byte, boolean 等,
這些基本型別沒辦法使用 instanceof 這個運算子,
必須是 Integer, Byte, Boolean 這些物件化的才可以使用喔!

除了任意物件都會繼承 Object 外,任何陣列也都繼承Object,
所以所有的物件陣列都將同時繼承 Object 和 Object[]。
基本型別的陣列同樣會繼承Object,
但因為基本型別不是物件,所以基本型別陣列不會繼承 Object[]。

關鍵字:java instanceof, 泛型, boolean, exception, operator, 使用, 用法, string, 效率, null, api, typeof
參考資料:

這個網誌中的熱門文章

2018年5月繳106年度綜合所得稅信用卡優惠整理!

最新106年度綜合所得稅計算教學!教你看懂稅率級距表/免稅額/扣除額!今年新增基本生活費不課稅也更新囉~

綜合所得稅節稅攻略:列舉扣除額保險費篇!

證件遺失補辦身分證/健保卡/駕照/行照/信用卡總整理

國泰Koko combo icash網購/超商/icash/繳費5%!

綜合所得稅節稅攻略:列舉扣除額房貸房租篇!

7-11/全家/萊爾富刷信用卡/icash繳費賺回饋攻略!

2018最新博客來100,50,25折價券序號e-coupon分享

繳納2018/107年度房屋稅信用卡回饋/分期整理!

結婚不是罪!婚姻懲罰稅取消,夫妻可分開計稅!