1、前言
1.一、instanceof
是 Java 的保留關鍵字,一個二元操做符(和==,>,<是同一類東東)1.二、
做用:測試它左邊的對象是不是它右邊的類的實例1.三、
返回值:返回 boolean 的數據類型。2、instanceof 的說明、解釋
2.一、
說明:測試
2.二、
code
2.2.1_demo01_:對象
double obj = 1; if (obj instanceof Double) System.out.println("true"); //無輸出-->不成立
2.2.2_demo02_:繼承
String obj = 1.0 + ""; if (obj instanceof Double) System.out.println("true"); //無輸出:
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
2.2.4_demo04_:接口
String obj = null; if (obj instanceof null) System.out.println("true"); else System.out.println("false");
2.2.5_demo05_:前方高能,務必仔細閱讀!!!編譯器
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 } }
分析:it
疑惑1:爲何用student()測試String時編譯報錯,測試List的時編譯經過io
疑惑2:Student已經肯定類型了啊,List類型也是肯定的啊,爲何可以編譯經過呢,而String卻不行呢?``編譯
String、Integer、Long
等都是最終類,他們的處理相似於編譯器對常量的處理,故而能夠經過編譯final
關鍵字的時候,其表現就跟String、Integer、Long
這些最終類測試instanceof表現的同樣了。3、instanceof 的用法
result = object instanceof class
參數:
result
:布爾類型值object
:類的對象class
: 對象類4、綜述