老生常談Java中instanceof關(guān)鍵字的理解
java 中的instanceof 運(yùn)算符是用來在運(yùn)行時(shí)指出對(duì)象是否是特定類的一個(gè)實(shí)例。instanceof通過返回一個(gè)布爾值來指出,這個(gè)對(duì)象是否是這個(gè)特定類或者是它的子類的一個(gè)實(shí)例。
用法:
result = object instanceof class
參數(shù):
Result:布爾類型。
Object:必選項(xiàng)。任意對(duì)象表達(dá)式。
Class:必選項(xiàng)。任意已定義的對(duì)象類。
說明:
如果 object 是 class 的一個(gè)實(shí)例,則 instanceof 運(yùn)算符返回 true。如果 object 不是指定類的一個(gè)實(shí)例,或者 object 是 null,則返回 false。
但是instanceof在Java的編譯狀態(tài)和運(yùn)行狀態(tài)是有區(qū)別的:
在編譯狀態(tài)中,class可以是object對(duì)象的父類,自身類,子類。在這三種情況下Java編譯時(shí)不會(huì)報(bào)錯(cuò)。
在運(yùn)行轉(zhuǎn)態(tài)中,class可以是object對(duì)象的父類,自身類,不能是子類。在前兩種情況下result的結(jié)果為true,最后一種為false。但是class為子類時(shí)編譯不會(huì)報(bào)錯(cuò)。運(yùn)行結(jié)果為false。
例子:
接口Person
public interface Person { public void eat(); }
實(shí)現(xiàn)類People
public class People implements Person { private int a=0; @Override public void eat() { System.out.println("======"+a); } }
子類xiaoming:
public class xiaoming extends People { private String name; @Override public void eat() { System.out.println("+++++++++"); } }
主函數(shù)
public static void main(String[] args) { People p=new People(); xiaoming x=new xiaoming(); System.out.println(p instanceof Person); System.out.println(p instanceof xiaoming); -----2 System.out.println(x instanceof Person); System.out.println(x instanceof People); }
注意:上面2處的代碼在編譯時(shí)不會(huì)報(bào)錯(cuò)。
運(yùn)行結(jié)果:
true
false
true
true
總結(jié)
以上所述是小編給大家介紹的Java中instanceof關(guān)鍵字的理解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Java中instanceof關(guān)鍵字實(shí)例講解
- Java關(guān)鍵字之instanceof詳解
- Java instanceof關(guān)鍵字用法詳解及注意事項(xiàng)
- java中instanceof 關(guān)鍵字作用和實(shí)際用途詳解
- Java關(guān)鍵字instanceof用法及實(shí)現(xiàn)策略
- java instanceof操作符使用及原理解析
- java 中的instanceof用法詳解及instanceof是什么意思(推薦)
- Java instanceof用法詳解及實(shí)例代碼
- Java深入講解instanceof關(guān)鍵字的使用
相關(guān)文章
idea配置maven環(huán)境時(shí)maven下載速度慢的解決方法
我們?cè)趇dea配置maven環(huán)境的時(shí)候會(huì)發(fā)現(xiàn)maven更新慢的現(xiàn)象,解決辦法就是下載國內(nèi)的鏡像包,完美解決下載速度慢的問題,文中有詳細(xì)的具體操作方法,并通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02SpringBoot?調(diào)用外部接口的三種實(shí)現(xiàn)方法
Spring Boot調(diào)用外部接口的方式有多種,常見的有以下三種方式:RestTemplate、Feign 和 WebClient,本文就詳細(xì)介紹一下,感興趣的可以了解一下2023-08-08SpringMVC獲取請(qǐng)求參數(shù)筆記整理
本文記錄和分享在學(xué)習(xí)Spring MVC過程中的筆記,通過案例示例代碼分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04SpringBoot發(fā)送郵件功能 驗(yàn)證碼5分鐘過期
這篇文章主要為大家詳細(xì)介紹了SpringBoot發(fā)送郵件功能,驗(yàn)證碼5分鐘過期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Spring需要三個(gè)級(jí)別緩存解決循環(huán)依賴原理解析
這篇文章主要為大家介紹了Spring需要三個(gè)級(jí)別緩存解決循環(huán)依賴原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02