instanceof 运算符用于检查对象是否是特定类(构造函数)的实例。
其语法为:
对象 instanceof 类
如果对象是特定类(或者是由该类创建的对象)的实例,则返回 true;否则返回 false
package com.zsh.java;
public class Person {//父类
}
package com.zsh.java;
public class Student extends Person{//子类
}
package com.zsh.java;
public class Teacher extends Person{//子类
}
package com.zsh;
import com.zsh.java.Person;
import com.zsh.java.Student;
import com.zsh.java.Teacher;
public class Demo007 {
public static void main(String[] args) {
Student s1 = new Student();
Teacher t1 = new Teacher();
boolean b1;
boolean b2;
boolean b3;
boolean b4;
b1 = s1 instanceof Student? true:false; //判断s1的类型
b2 = t1 instanceof Teacher? true:false; //判断t1的类型
b3 = s1 instanceof Person? true:false; //判断s1的类型
b4 = "中国梦" instanceof String? true:false;//判断"中国梦"的类型
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
}
}
结构展示:
instanceof运算符在多态时会使用到,当父类引用引用子类对象的时候,只能够访问到父类中的成员,无法访问子类的,除非进行强制类型转换。此时,当我们进行强制类型转换的时候,可以使用instanceof关键字来判断类型转换是否有效,但判断是发生向上转型(返回true)只能访问其父类时,就可以进行强制类型转换。