java中instanceof關鍵字的理解

剛剛在瞭解“==”和equals的異同,看到equals源碼中的instanceof關鍵字,然後特地做個筆記

1. equals方法的源碼新的理解:

public boolean equals(Object obj) {
        if (obj instanceof Integer) {                  //如果object是integer的子類或者本身就是integer類,則表達式爲true
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

2.instanceof的作用:判斷其左邊對象是否爲其右邊類的實例,返回boolean類型的數據。可以用來判斷繼承中的子類的實例是否爲父類的實現。

3.instanceof的用法:boolean result = object instanceof class

4.instanceof的結果:如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。如果 object 不是指定類的一個實例,或者 object 是 null,則返回 false。

5.實例:

public class Parent {
    private int name;
    public void run(){}
}

public class TestIns{
    public static void main(String[] args) {
        Son son = new Son();
        Parent parent = new Parent();
        // result = object instanceof class 
        boolean result1 = son instanceof Parent;//class是object的父類
        boolean result2 = parent instanceof Parent;//class是自身類
        boolean result3 = parent instanceof Son;//class是子類
        System.out.println("result1="+result1);
        System.out.println("result2="+result2);
        System.out.println("result3="+result3);
    }

}
class Son extends Parent{

}

6.結論:

編譯時:class爲object的父類,自身類,子類,編譯均不會報錯

運行時:class爲object的父類,自身類時結果爲true,class爲object的子類時結果爲false

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章