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


相關文章

這個網誌中的熱門文章

【博客來折價券】博客來免費序號e-coupon分享(持續更新)

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

【多益成績】TOEIC多益成績分數查詢、計算標準與換算對照表

【超商懶人包】消費享10%回饋攻略+繳費取貨也能賺回饋?

【銀行代碼查詢】3碼銀行代碼列表、7碼分行代碼查詢

【台新@GoGo】消費享1.5%網購3.5%!行動支付/保費密技!

【Uber優步】2019免費序號「ewdnacom」享200乘車優惠!

【華南i網購生活卡】2019網購+行動支付5%神卡(最高6%)!

【信用卡排行榜】2019網購/行動支付神卡推薦最高6%回饋!

【玉山卡申辦攻略】玉山新戶辦icash+Pi雙刀流賺首刷900!