用法:
(類型變數 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
通常在進行強制類型轉換之前,先判斷前一個對象是不是後一個對象的執行個體,是否可以成功轉換,從而保證代碼的健壯性。