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


相關文章

這個網誌中的熱門文章

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

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

【永豐DAWHO攻略】申辦DAWHO帳戶/信用卡最佳申辦順序!

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

【永豐大戶DAWHO】活存100萬內1.1%+16次免費跨轉跨提!

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

秒級偵測網頁更新變動通知(PageMonitor,Check4Change)

【永豐信用卡推薦方案】首刷800+指定卡再200或機場接送!

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

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