instanceif关键字

instanceof

instanceof是Java 的保留关键字。

它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。

  • 类的实例包含本身的实例,以及所有直接或间接子类的实例

  • instanceof左边显式声明的类型与右边操作元必须是同种类或存在继承关系,也就是说需要位于同一个继承树,否则会编译错误

  • instanceof关键字的左边的对象不能是基础数据类型

  • 左边的对象实例和右边的类不在同一个继承树上

简单理解,A isntanceof B:以左边类名为准,判断左右是否是存在父子关系,如果是则编译通过,否则编译报错!编译通过后,再判断A是否是B的实例对象或者B子类的对象!

因为null可以转换成为任何类型,所以不属于任何类型,instanceof结果会是false。

代码实例:

public class Father {
}
public class Son extends Father{

}
public class Test {
    public static void main(String[] args) {
        Son son=new Son();
        System.out.println(son instanceof Son);
        System.out.println(son instanceof Father);
        System.out.println(son instanceof Object);
        Object object=new Object();
        System.out.println(object instanceof Father);
        String str="java里面的所有类都默认继承了Object";
        System.out.println(str instanceof String);
        System.out.println(str instanceof Object);
    }
}

输出结果:

true
true
true
false
true
true

这部分比较绕,多敲点代码理解一下!

posted @ 2022-07-13 18:33  星余明  阅读(85)  评论(0编辑  收藏  举报