java中instanceof用法

java中instanceof用法java中的instanceof运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。用法:result=objectinstanceofclass参数:Result:布尔类型。Object:必选项。任意对象表达式。Class:必选项。任意已定义的对象类。说明:如果object是cla

大家好,又见面了,我是你们的朋友全栈君。

1. java 中的instanceof介绍:

首先,java 中的instanceof是一个运算符,而且是二目运算符,即有两个操作数。该运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
 用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

2. 举例说明如下:

例子如下:

interface A{}
 class B implements A{
 
 }
 class C extends B {
 
 }

对于以上代码,测试结果分析如下:

     boolean res;
     A a=null;
     B b=null;

     res = a instanceof A; //因为a是null,所以结果为false
     res = b instanceof B; //因为b是null,所以结果为false

     a=new B();

     res = a instanceof A; //因为a是B类型的实例,B又是A的一个实现类,所以结果为true
     res = a instanceof B; //因为a是B类型的实例,所以结果为true

     B b2=(C)new C();
     res = b2 instanceof A; //因为b2是C类型的实例,而C是B的子类,B又是A的一个实现类,所以结果为true
     res = b2 instanceof B; //因为b2是C类型的实例,所以结果为true
     res = b2 instanceof C; //因为b2是C类型的实例,而C是B的子类,所以结果为true

全部测试代码:


package com.instanceoftest;



 interface A{}
 class B implements A{
 
 }
 class C extends B {
 
 }


 
 class instanceoftest {
  public static void main(String[] args){
     A a=null;
     B b=null;
     boolean res;
    
     System.out.println("instanceoftest test case 1: ------------------");
       res = a instanceof A;
       System.out.println("a instanceof A: " + res);
      
       res = b instanceof B;
       System.out.println("b instanceof B: " + res);
      
     System.out.println("/ninstanceoftest test case 2: ------------------");  
     a=new B();
     b=new B();
    
     res = a instanceof A;
     System.out.println("a instanceof A: " + res);
    
     res = a instanceof B;
     System.out.println("a instanceof B: " + res);

     res = b instanceof A;
     System.out.println("b instanceof A: " + res);
    
     res = b instanceof B;
     System.out.println("b instanceof B: " + res);
   
     System.out.println("/ninstanceoftest test case 3: ------------------");
     B b2=(C)new C();
    
     res = b2 instanceof A;
     System.out.println("b2 instanceof A: " + res);
    
     res = b2 instanceof B;
     System.out.println("b2 instanceof B: " + res);
    
     res = b2 instanceof C;
     System.out.println("b2 instanceof C: " + res);
  }
}

测试结果:

/*
result:

instanceoftest test case 1: ——————
a instanceof A: false
b instanceof B: false

instanceoftest test case 2: ——————
a instanceof A: true
a instanceof B: true
b instanceof A: true
b instanceof B: true

instanceoftest test case 3: ——————
b2 instanceof A: true
b2 instanceof B: true
b2 instanceof C: true

*/

 特别说明: 接口也可以作为instanceof的右操作数。


实践是检验真理的唯一标准。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158470.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • C++读写锁介绍_数据库读写锁

    C++读写锁介绍_数据库读写锁一点睛先看看互斥锁,它只有两个状态,要么是加锁状态,要么是不加锁状态。假如现在一个线程a只是想读一个共享变量i,因为不确定是否会有线程去写它,所以我们还是要对它进行加锁。但是这时又有一个线程b试图去读共享变量i,发现被锁定了,那么b不得不等到a释放了锁后才能获得锁并读取i的值,但是两个读取操作即使是同时发生的,也并不会像写操作那样造成竞争,因为它们不修改变量的值。所以我们期望在多个线…

  • 零基础学Java(10)面向对象-使用LocalDate类完成日历设计

    零基础学Java(10)面向对象-使用LocalDate类完成日历设计前言在我们完成这个日历设计前,需要了解Java中的预定义类LocalDate的一些用法语法LocalDate.now()//2022-07-01会构造一个新对象,表示构造这个对象时的日期。

  • 最小角回归算法定义_有无回归算法

    最小角回归算法定义_有无回归算法最小角回归算法(LeastAngleRegression,LAR)是一种针对于线性回归问题,快速进行特征选择和回归系数计算的迭代算法,其被广泛推广用于求解线性回归以及Lasso回归问题。最小角回归算法的核心思想为:将回归目标向量依次分解为若干组特征向量的线性组合,最终使得与所有特征均线性无关的残差向量最小。可见,最小角回归算法的关键在于选择正确的特征向量分解顺序和分解系数。为了更好的表示最…

  • 华为HarmonyOS开发者日(华为手机的开发者选项在哪里)

    今年9月的华为开发者大会HDC2020上,华为发布了面向全场景的分布式操作系统HarmonyOS2.0。这款操作系统一经发布便获得了业内的热切关注,在开源社区更是掀起了一股讨论的热潮。…

  • 免费mysql服务器_mysql初始化失败

    免费mysql服务器_mysql初始化失败1.在mysql数据库里面想再建立一个用户,可是提示错误?​在mysql命令行里面,想用“createuser”命令建立一个名为“developer”,密码为“123456”的mysql用户。语句:createuser’developer’@’localhost’identifiedby’123456′;可是执行之后提示:ERROR1396:OperationCREATEUSER…

  • Bof基础实践_实践的基础是什么

    Bof基础实践_实践的基础是什么Bof基础Bof原理Linux下进程地址空间的布局典型的堆栈结构上图中可以看到栈中有returnaddress还有局部变量,也就是函数的参数,bof攻击是利用上参数的溢出将返回地址retur

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号