1、前言
1.一、instanceof
是 Java 的保留關鍵字,一個二元操做符(和==,>,<是同一類東東)1.二、
做用:測試它左邊的對象是不是它右邊的類的實例1.三、
返回值:返回 boolean 的數據類型。instanceof
用法詳解及instanceof是什麼意思,須要的朋友參考下吧2、instanceof 的說明、解釋
2.一、
說明: instanceof
左邊操做元顯式聲明的類型與右邊操做元必須是同種類或有繼承關係, 即位於繼承樹的同一個分支上, 不然會編譯出錯 !2.二、
demo2.2.1_demo01_:測試
double obj = 1; if (obj instanceof Double) System.out.println("true"); //無輸出-->不成立
編譯信息: Incompatible conditional operand types double and Double錯誤code
2.2.2_demo02_:對象
String obj = 1.0 + ""; if (obj instanceof Double) System.out.println("true"); //無輸出:
編譯信息:Incompatible conditional operand types String and Double" 錯誤繼承
2.2.3_demo03_:token
if(null instanceof Object) System.out.println("true"); else System.out.println("false"); //輸出:false String obj = null; if (obj instanceof Object){ System.out.println("true"); else System.out.println("false"); //輸出:false
分析:null用操做符instanceof測試任何類型時都是返回false的接口
2.2.4_demo04_:編譯器
String obj = null; if (obj instanceof null) System.out.println("true"); else System.out.println("false");
編譯信息:Syntax error on token "null", invalid ReferenceType" 標記"null"上的語法錯誤,無效引用類型it
2.2.5_demo05_:前方高能,務必仔細閱讀!!!io
class Student {} public class Test { public static void main(String[] args){ //第1組 System.out.println(new Student() instanceof String); //編譯時錯誤 System.out.println(new Student() instanceof Exception); //編譯時錯誤 System.out.println(new Student() instanceof Object); //輸出時true //第2組 System.out.println(new Student() instanceof List); //輸出false System.out.println(new Student() instanceof List<?>); //輸出false System.out.println(new Student() instanceof List<String>); //編譯錯誤 System.out.println(new Student() instanceof List<Object>); //編譯錯誤 //第3組 System.out.println(new String() instanceof List); //編譯錯誤 System.out.println(new String() instanceof List<?>); //編譯錯誤 //第4組 System.out.println(null instanceof Object); //輸出錯誤,同demo03 } }
分析:編譯
對於第2組:
疑惑1:爲何用student()測試String時編譯報錯,測試List的時編譯經過
疑惑2:Student已經肯定類型了啊,List類型也是肯定的啊,爲何可以編譯經過呢,而String卻不行呢?``
String、Integer、Long
等都是最終類,他們的處理相似於編譯器對常量的處理,故而能夠經過編譯final
關鍵字的時候,其表現就跟String、Integer、Long
這些最終類測試instanceof表現的同樣了。3、instanceof 的用法
result = object instanceof class
result
:布爾類型值object
:類的對象class
: 對象類4、綜述