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的右操作数。


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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 嘉立创pcb工艺_流程图制作

    嘉立创pcb工艺_流程图制作现在做板子基本上是选择嘉立创和捷配,今天看一下嘉立创如何下PCB和STM贴片单,改天再写一下捷配的下单我喜欢用下单助手,比较方便注意需要把自己的板子的PCB文件用压缩软件生成压缩包文件,名字自己取

    2022年8月1日
    4
  • 孤单,能力守得住繁华

    孤单,能力守得住繁华

    2022年1月2日
    44
  • POJ 1322 Chocolate

    POJ 1322 Chocolate

    2021年12月1日
    46
  • 设计模式之访问者(visitor)模式

    在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示。在软件开发中,有时候也需

    2021年12月28日
    40
  • 【数据结构】字典树TrieTree图文详解

    【数据结构】字典树TrieTree图文详解问题引入现在,我给你n个单词,然后进行q次询问,每一次询问一个单词b,问你b是否出现在n个单词中,你会如何去求呢?暴力搜索?但是我们如果这么做的话时间复杂度一下就高上去了。大家都是成熟的ACMer了,不要再惦记着暴力的方法啦,要优雅。你想想,问题的描述像不像查字典的操作?你平时是怎么查字典的?想想看?如果你要在字典中查找单词“Avalon”,你是不是先找到首字母为‘A’的部分,然后再找第二个单词为‘V’的部分······最后,你可能可以找到这个单词,当然,也有可能这本词典并没有这个单词。你想想看,

    2022年9月7日
    3
  • 查询接口调用成功,但未查询到数据_dde怎么看

    查询接口调用成功,但未查询到数据_dde怎么看DTU轮询采集指令YeeCOMDTU提供了22组周期串口轮询,1组定时串口查询功能,根据配置规则自动输出串口指令,可实现自动采集外设数据并上报服务器,替代服务器的轮询,减小服务器开销。注1:第1组串口轮询最多可配置6条,单条最大长度28;第2组串口轮询最多可配置4条;单条最大长度28;1组固定时间,最多可以配置5条;单条最大长度20;如还不够或特殊需求可以由服务器下发指令或定制DTU版本。注2:轮询指令可灵活配置,常见

    2022年10月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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