Java instanceof用法详解

instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。

instanceof

instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。

这里说明下

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

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

instanceof用法

  • 左边的对象实例不能是基础数据类型
    这里写图片描述

  • 左边的对象实例和右边的类不在同一个继承树上
    这里写图片描述

  • null用instanceof跟任何类型比较时都是false
    这里写图片描述

代码示例

public interface A {
}

public class B implements A{

}

public class C extends B{
}

测试代码示例

public class InstanceofTest3 {

    public static void main(String[] args) {
        A a = null;
        B b = null;
        boolean result;
        result = a instanceof A;
        System.out.println(result); // 结果:false null用instanceof跟任何类型比较时都是false
        result = b instanceof B;
        System.out.println(result); // 结果:false null用instanceof跟任何类型比较时都是false


        a = new B();
        b = new B();
        result = a instanceof A;
        System.out.println(result); // 结果:true a是接口A的实例对象引用指向子类类B,类B实现了接口A,所以属于同一个继承树分支
        result = a instanceof B;
        System.out.println(result); // 结果:true a是接口A的实例对象引用指向子类类B,类B实现了接口A,所以属于同一个继承树分支
        result = b instanceof A;
        System.out.println(result);// 结果:true b是类B的实例对象,类B实现了接口A,所以属于同一个继承树分支
        result = b instanceof B;
        System.out.println(result);// 结果:true b是类B的实例对象,类B实现了接口A,所以属于同一个继承树分支


        B b2 = new C();
        result = b2 instanceof A;
        System.out.println(result); // 结果:true b2是父类B引用指向子类C,类B实现了接口A,所以属于同一个继承树分支
        result = b2 instanceof B;
        System.out.println(result); // 结果:true b2是父类B引用指向子类C,所以属于同一个继承树分支
        result = b2 instanceof C;
        System.out.println(result); // 结果:true b2是父类B引用指向子类C,所以属于同一个继承树分支
    }
}

instanceof应用场景

instanceof一般用于对象类型强制转换

public class C extends B {

    private void print(Object a) {
        System.out.println(a+" instanceof");
    }

    public void convert(String b) {

        if (b instanceof Object) {
            this.print(b);
        }
    }

}
public class InstanceofTest4 {

    public static void main(String[] args) {
        C c = new C();
        c.convert("aa");
    }
}

输出结果:

aa instanceof
Java中,instanceof是一个保留关键字,被用来测试一个对象是否是指定类或其父类的一个实例。它返回一个boolean类型的值,如果对象是指定类或其父类的一个实例则返回true,否则返回false。 instanceof通常用于对象类型的强制转换,可以使用它来检查一个对象是否是某个类的实例,然后进行相应的处理。如果一个对象是指定类的实例,可以使用强制类型转换将其转换为指定类的类型,然后对其进行操作。如果一个对象不是指定类的实例,可以进行其他逻辑处理。 例如,在一个类中,可以使用instanceof关键字来判断一个对象是否是另一个类的实例,如果是,则可以对其进行相应的操作。在上面的代码示例中,C类中的convert方法使用了instanceof关键字来检查参数b是否是Object类的实例,如果是,则调用了print方法打印出b的信息。 总结起来,instanceof关键字在Java中的用法是用来测试一个对象是否是指定类或其父类的一个实例,可以用于对象类型的强制转换和判断逻辑。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java instanceof用法详解](https://blog.csdn.net/kuangay/article/details/81563992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Java关键字instanceof用法及实现策略](https://download.csdn.net/download/weixin_38621553/12721904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值