instanceof instanceof是Java 的保留關鍵字。 它的作用是測試它左邊的對象是否是它右邊的類的實例,返回 boolean 的數據類型。 類的實例包含本身的實例,以及所有直接或間接子類的實例 instanceof左邊顯式聲明的類型與右邊操作元必須是同種類或存在繼承關係,也就是說需要 ...
instanceof
instanceof是Java 的保留關鍵字。
它的作用是測試它左邊的對象是否是它右邊的類的實例,返回 boolean 的數據類型。
-
類的實例包含本身的實例,以及所有直接或間接子類的實例
-
instanceof左邊顯式聲明的類型與右邊操作元必須是同種類或存在繼承關係,也就是說需要位於同一個繼承樹,否則會編譯錯誤
-
instanceof關鍵字的左邊的對象不能是基礎數據類型
-
左邊的對象實例和右邊的類不在同一個繼承樹上
簡單理解,A isntanceof B:以左邊類名為準,判斷左右是否是存在父子關係,如果是則編譯通過,否則編譯報錯!編譯通過後,再判斷A是否是B的實例對象或者B子類的對象!
因為null可以轉換成為任何類型,所以不屬於任何類型,instanceof結果會是false。
代碼實例:
public class Father {
}
public class Son extends Father{
}
public class Test {
public static void main(String[] args) {
Son son=new Son();
System.out.println(son instanceof Son);
System.out.println(son instanceof Father);
System.out.println(son instanceof Object);
Object object=new Object();
System.out.println(object instanceof Father);
String str="java裡面的所有類都預設繼承了Object";
System.out.println(str instanceof String);
System.out.println(str instanceof Object);
}
}
輸出結果:
true
true
true
false
true
true
這部分比較繞,多敲點代碼理解一下!