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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CreateCompatibleDC用法

    CreateCompatibleDC用法CreateCompat 假如需要对屏幕进行比较多的 gdi 函数操作 如果每一步操作都直接对屏幕 dc 进行操作 那出现的大多数可能性都是屏幕的闪烁 一个很好的解决方法就是使用内存 dc 将这些操作全部先在内

    2025年11月15日
    2
  • 当前Activity跳转到另外一个Activity「建议收藏」

    当前Activity跳转到另外一个Activity「建议收藏」当前Activity跳转到另外一个ActivityStep1:创建firest_layout.xml文件.添加一个Button:<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android…

    2022年5月11日
    49
  • vb封装vba代码成exe文件_宏vba安装包

    vb封装vba代码成exe文件_宏vba安装包将ExcelVBA封装成exe程序[老贴收藏]假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:一、用VB制作EXE文件头部分1、打开VB,“文件”-“新建工程”-“标准EXE”;2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,…

    2022年10月3日
    2
  • mysql临时表更新_MySql 临时表

    mysql临时表更新_MySql 临时表今天在项目中遇到一个 当 mysql 的 in 语句中数据量很大时 建立一个临时表的例子 于是楼主整理了一下关于临时表的知识 与大家分享一下 首先 临时表只在当前连接可见 当关闭连接时 Mysql 会自动删除表并释放所有空间 因此在不同的连接中可以创建同名的临时表 并且操作属于本连接的临时表 建立临时表 CREATETEMPOR table idVARCHAR 32 N

    2025年10月6日
    3
  • paddle tensorflow_平板屏保图片

    paddle tensorflow_平板屏保图片 tf.pad()文档如下,pad(tensor,paddings,mode=’CONSTANT’,name=None,constant_values=0)   Padsatensor.      Thisoperationpadsa`tensor`accordingtothe`paddings`youspecify.   `paddings`is…

    2022年8月13日
    3
  • 基于Opencv快速实现人脸识别(完整版)

    基于Opencv快速实现人脸识别(完整版)上篇博客:https://blog.csdn.net/beyond9305/article/details/92844258严格来说标题是有误的,只是单纯地对人脸进行了检测,而并非识别,opencv内置了检测分类器和识别器,这二者还是有很大不同的。这次进一步地研究这一块的知识,来一波真正意义上的人脸识别,查询的资料可能有点过时,但基本思想是没有毛病的,对一些函数也进行了更新,保证了功能的正常实…

    2022年6月7日
    35

发表回复

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

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