• 技术文章 >java >java基础

    java中instanceof运算符是什么

    小妮浅浅小妮浅浅2021-06-28 09:48:57原创2174

    概念

    1、该运算符用于操作对象的例子,检查对象是否为特定类型(类型或接口类型)。

    格式

    2、如果计算器左侧变量所指的对象是操作器右侧类或接口的对象,则结果是真实的。

    1

    ( Object reference variable ) instanceof  (class/interface type)

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    package com.verify_instanceof;

     public class TestInstanceOf {

         public static void main(String[] args) {

         //下面四行代码用来证明:instanceof运算符是判断对象变量中存放的引用的所属类是否与指定类相同,或者为指定类的后代类;而不是判断对象变量的所属类是否为指定类,或指定类的后代类

         A a1 = null;

         RootInterface ra = new A();

         System.out.println("a1 instanceof A:"+(a1 instanceof A));//null不是A类的实例对象,也不是A类的后代类的实例对象,故返回结果为false;

         System.out.println("ra instanceof RootInterface:"+(ra instanceof RootInterface));//true,原因在于对象变量ra中存放的引用的所属类为类A,而类A实现了接口RootInterface,可以理解为类A是接口RootInterface的子类

         System.out.println("ra instanceof A:"+(ra instanceof A));//对象变量ra中存放的引用的所属类为A类,故返回结果为true;

     

         //下面的代码用于验证只要对象变量中存放的引用的所属类是指定类或者是指定类的后代类,结果就为true;反之,结果为false;

         RootInterface rb = new B();

         RootInterface rc = new C();

         System.out.println("rb instanceof A:"+(rb instanceof A));//true,原因在于对象变量rb中存放的是类B的实例对象的引用,而指定类为类A,类B为类A的直接后代类,故返回true

         System.out.println("rb instanceof B:"+(rb instanceof B));//true,原因在于对象变量rb中存放的是类B的实例对象的引用,而指定类就是类B,两个类为同一个类,故返回true

             System.out.println("rc instanceof A:"+(rc instanceof A));//true,原因在于对象变量rc中存放的是类C的实例对象的引用,而指定类为类A,类C为类A的间接后代类,故返回true

         System.out.println("rb instanceof C:"+(rb instanceof C));//false,原因在于对象变量rb中存放的是类B的实例对象的引用,而指定类为类C,类B不是类C的后代类,故返回false

         }

     }

    以上就是java中instanceof运算符的介绍,希望对大家有所帮助。更多Java学习指路:Java基础

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java instanceof
    上一篇:java条件运算符是什么 下一篇:java之JVM的字节码结构

    相关文章推荐

    • Java内存模型的并发处理• Java内存交互如何操作• Java内存屏障是什么• java内存屏障有哪些类型• java volatile变量的并发操作• volatile在java禁止指令重排的分析• java中volatile变量的原理• java内部类的访问• 内部类在java多重继承的实现• java内部类的两种类型• java匿名内部类如何使用• java内部类的内存泄漏原因• java中Thread Dump是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网