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
參考資料:


相關文章

這個網誌中的熱門文章

【汽機車燃料費攻略】2020/109年度信用卡回饋/分期整理!

【台新雙狗更新】@GoGo卡網購支付6%、FlyGo卡航旅6%!

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

【玉山U Bear卡】網購3.8%超商5%影音20%/icash限定8%!

【信用卡排行榜】2020國內外必辦現金回饋信用卡推薦!

【永豐大戶DAWHO】現金回饋信用卡國內2%國外3%最高8%!

【Richart Life】台新Pay10%+點10成金10%+@GoGo6%=26%!

【永豐幣倍卡】權益更新!免換匯行動支付6%、最高9%!