概念:java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
公式: result = object instanceof class
参数分析:
result :布尔类型
object :任意的一个实例或者是表达式
class: 任意一个已定义的类
结果分析:
如果object是class的一个实例返回true,如果不是或者object 为 null 则返回false
instaanceof在运行时和编译时是有区别的:
在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。
在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。
public class Base {
String name = "base";
public void baseA() {
System.out.println("name is" + name);
}
}
public class Child extends Base {
String name ="child";
String age ="18";
}
public class Test {
public static void main(String[] args) {
Base base = new Child();
System.out.print(base instanceof Base);
System.out.print(base instanceof Child);
System.out.print(base instanceof Object);
System.out.print(base instanceof System); --编译错误
}
}