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的實例
