用法:
(類型變數instanceof 類別|介面)
作用:
instanceof 運算子用來判斷前面的物件是否是後面的類,或者其子類別、實作類別的實例。如果是則回傳true 否則就回傳false。
注意:
・ instanceof前面的操作數的編譯時類型要麼與後面的類別相同,要麼與後面的類別具有父子繼承關係否則會引發編譯錯誤。
一個簡單的例子:
複製代碼代碼如下:
/**
* instanceof 運算符
* @author Administrator
*
*/
public class TestInstanceof {
public static void main(String[] args) {
//宣告hello 時使用Object類,則hello的編譯型別是Object
//Object類別是所有類別的父類,但hello的實際類型是String
Object hello = "Hello";
//String是Object的子類別可以進行instanceof運算,回傳true
System.out.println("字串是否為object類別的實例:"
+ (hello instanceof Object));
//true
System.out.println("字串是否為String的實例:"
+ (hello instanceof String));
//false
System.out.println("字串是否為Math類別的實例:"
+ (hello instanceof Math));
//String實作了Comparable接口,所以回傳true
System.out.println("字串是否為Comparable類別的實例:"
+(hello instanceof Comparable));
/**
* String 不是Math類,也不是Math類的父類,故下面程式碼編譯錯誤
*/
//String a = "hello";
//System.out.println("字串是否為Math類別的實例:"
// + (a instanceof Math));
}
}
運行結果:
複製代碼代碼如下:
字串是否為object類別的實例:true
字串是否為String的實例:true
字串是否為Math類別的實例:false
字串是否為Comparable類別的實例:true
通常在進行強制型別轉換之前,先判斷前一個物件是不是後一個物件的實例,是否可以成功轉換,從而保證程式碼的健全性。