Java中instanceof關鍵字的理解

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

相關文章
相關標籤/搜索