java 中的instanceof 運算符是用來在運行時指出對象是不是特定類的一個實例。instanceof經過返回一個布爾值來指出,這個對象是不是這個特定類或者是它的子類的一個實例。java
用法:
result = object instanceof class
參數:
Result:布爾類型。
Object:必選項。任意對象表達式。
Class:必選項。任意已定義的對象類。
說明:
若是 object 是 class 的一個實例,則 instanceof 運算符返回 true。若是 object 不是指定類的一個實例,或者 object 是 null,則返回 false。 ide
可是instanceof在Java的編譯狀態和運行狀態是有區別的:函數
在編譯狀態中,class能夠是object對象的父類,自身類,子類。在這三種狀況下Java編譯時不會報錯。對象
在運行轉態中,class能夠是object對象的父類,自身類,不能是子類。在前兩種狀況下result的結果爲true,最後一種爲false。可是class爲子類時編譯不會報錯。運行結果爲false。接口
例子:編譯
接口Personclass
public interface Person {
public void eat();
}object
實現類Peopleim
public class People implements Person {
private int a=0;
@Override
public void eat() {
System.out.println("======"+a);
}static
}
子類xiaoming:
public class xiaoming extends People {
private String name;
@Override
public void eat() {
System.out.println("+++++++++");
}
}
主函數
public static void main(String[] args) {
People p=new People();
xiaoming x=new xiaoming();
System.out.println(p instanceof Person);
System.out.println(p instanceof xiaoming); -----2
System.out.println(x instanceof Person);
System.out.println(x instanceof People);
}
注意:上面2處的代碼在編譯時不會報錯。
運行結果:
truefalsetruetrue