java篇 类的进阶0x08:instanceof 操作符

instanceof操作符用于判断对象是否是特定类型或其子类的实例,对于null值总是返回false。它在处理参数类型不确定或需要确认对象是否能执行特定子类方法的场景中很有用。示例代码展示了instanceof如何在不同对象和子类关系中工作。
摘要由CSDN通过智能技术生成

instanceof 操作符

instanceof 操作符,可以判断一个引用指向的对象是否是某一个类型或其子类,是则返回 true,否则返回 false。

之所以是其子类也行,是因为本身子类实例可以当成父类实例来使用。

如果引用是 null,则肯定返回 false。

因为 instanceof 是判断一个对象是不是某个类型的实例,null 本身就为空,不是一个实例,所以自然返回的是 false。

所以 instanceof 有两层意思:

  • 判断实例是否是某个类型的实例(或其子类的实例)
  • 判断是否为空

instanceof常用场景:

  • 别人传参数过来时,判断一下是否为空;
  • 对一些特殊子类操作前,先判断这个对象是否属于这个子类(才可以调用这个子类的方法)。
public class A {
    
}
public class B extends A{
    
}
public class C extends B{
    
}

// 调用类
public class TestUse {
    public static void main(String[] args) {
        A a = new B();
        System.out.println("--------------A----------");
        System.out.println(a instanceof A);					// true
        System.out.println((A)a instanceof A);				// true
        System.out.println((B)a instanceof A);				// true

        System.out.println("--------------B----------");
        System.out.println(a instanceof B);					// true
        System.out.println((A)a instanceof B);				// true
        System.out.println((B)a instanceof B);				// true

        System.out.println("--------------C----------");
        System.out.println(a instanceof C);					// false
        System.out.println((A)a instanceof C);				// false
        System.out.println((B)a instanceof C);				// false

        System.out.println("--------------null----------");
        System.out.println(null instanceof A);				// false
        System.out.println((A)null instanceof A);			// false
        System.out.println((B)null instanceof A);			// false
        System.out.println((C)null instanceof A);			// false
    }
}

// 说明 instanceof 的返回结果只与实际对象类型有关,与指向这个对象的引用类型无关。

instanceof 的返回结果只与实际对象类型有关,与指向这个对象的引用类型无关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值