Java中instanceof關鍵字的用法


Java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。

instanceof關鍵字的作用是判斷一個對象是否是一個具體類的實例,我們在重寫equals方法中要先判斷是否是同一對象,之后再判斷一個對象是否是另一個的實例,如果是判斷各個屬性值以判斷是否是同一對象,不是一定不是同一對象。

下面是String中equals的方法源碼:


也是先判斷是否為同一對象,利用instanceof關鍵字判斷是否是String的實例(任何字符串都是String的實例),如不是對字符串中每個字符進行比較

下面是instanceof的簡單舉例:

package dmeo_1;

public class Student extends Person{
    
    public static void main(String[] args) {

        if ("a" instanceof String) {
            //所有的字符串都是String的實例
            System.out.println("字符串是Stringde實例");
        }

        //只是聲明了對象並沒有創建,所以instanceof判斷是false
        Student s1 = null;
        Student s2 = null;
        if (s1 instanceof Student) {
            System.out.println("s1是Student的實例");
        }
        if (s2 instanceof Student) {
            System.out.println("s2是Student的實例");
        }

        //創建了對象實例,判斷為true
        s1 = new Student();
        s2 = new Student();
        if (s1 instanceof Student) {
            System.out.println("s1是Student的實例");
        }
        if (s2 instanceof Student) {
            System.out.println("s2是Student的實例");
        }

        /*任何類的父類都是Object類,可以這樣理解,我們在創建子類對象的時候,
        調用子類的構造方法時會默認調用父類無參的構造方法,其實是會創建父類的對象的,,有繼承關系的可以判斷出為true*/
        if (s1 instanceof Object) {
            System.out.println("s1是Object的實例");
        }

        Object obj = new Student();
        if (obj instanceof Student) {
            System.out.println("obj是Student的實例");
        }

        Student s3 = new Student();
        if (s3 instanceof Person) {
            System.out.println("s3是Student的父類Person的實例");
        }
    }
}

class Person{

}

輸出:

字符串是Stringde實例
s1是Student的實例
s2是Student的實例
s1是Object的實例
obj是Student的實例
s3是Student的父類Person的實例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM