Java 中有关instanceof详解及其应用

文章详细介绍了Java中的instanceof关键字,用于判断对象是否是特定类或接口的实例,以及其在不同情况下的返回结果。同时提到了isInstance方法,作为类的静态方法,功能与instanceof类似。文章通过代码示例展示了这两个概念的使用和区别。
摘要由CSDN通过智能技术生成

在Java中instanceof其实是一个二元操作符,和=,<,>这些是类似的,同时它也是被保留的关键字,主要的作用,是为了测试左边的对象,是不是右边的类的实例,返回的是boolean值。

A instance of B

注意:A是实例,而B则是Class类 

以下是代码测试

 interface A{}
 class B implements A{
 }
 class C extends B {
 }
public class Test {
    public static void main(String[] args){
     A a = null;
     B b = null;
     boolean bool; 
     System.out.println("----------------------");
     bool= a instanceof A; 
     System.out.println("a instanceof A: " + bool);
     bool= b instanceof B;
     System.out.println("b instanceof B: " + bool);
     System.out.println("----------------------"); 
     a = new B();
     b = new B();
     bool= a instanceof A; 
     System.out.println("a instanceof A: " + bool);
     bool= a instanceof B;
     System.out.println("a instanceof B: " + bool);
     bool= b instanceof A;
     System.out.println("b instanceof A: " + bool);
     bool= b instanceof B;
     System.out.println("b instanceof B: " + bool);
     System.out.println("----------------------");
     B b1 = new C();
     bool= b1 instanceof A;
     System.out.println("b1 instanceof A: " + bool);
     bool= b1 instanceof B;
     System.out.println("b1 instanceof B: " + bool);
     bool= b1 instanceof C;
     System.out.println("b1 instanceof C: " + bool);
 }
}

输出结果如下:

---------------------

a instanceof A: false

b instanceof B: false

----------------------

a instanceof A: true

a instanceof B: true

b instanceof A: true

b instanceof B: true

----------------------

b1 instanceof A: true

b1 instanceof B: true

b1 instanceof C: true

从以上结果可以看出,instanceof相当于判断当前对象能不能装换成为该类型,java里面上转型是安全的,子类对象可以转换成为父类对象(即父类引用指向子类对象),接口实现类对象可以装换成为接口对象(即接口对象指向实现类)。 

instanceof,isInstance区别是什么?

  • instanceof 判断对象和类型之间的关系,是关键字,只能用于对象实例,判断左边的对象是不是右边的类(包括父类)或者接口(包括父类)的实例化。
  • isInstance(Object o):判断对象和类型之间的关系,判断o是不是调用这个方法的class(包括父类)或者接口(包括父类)的实例化。

以上就是对instanceof,isInstance的总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值