• 第五章《类的继承》第6节:instanceof运算符


    Java语言中,有一个叫做instanceof的运算符,它能够判断一个对象是否归属于某一个类或它的子类。instanceof运算符的书写格式为:

    a instanceof X

    其中a是一个对象,也可以是指向某个对象的引用,而X则表示一个类的名称。如果a是X或X子类的对象,则运算结果为true,否则运算结果为false。以下的【例05_11】演示了如何使用instanceof运算符判断对象所属类型。

    【例05_11 instanceof运算符】

    Exam05_11.java

    1. public class Exam05_11 {
    2.     public static void main(String[] args) {
    3.         Student s = new Student();
    4.         Person p1 = new Person();
    5.         Person p2 = new Student();
    6.         System.out.println(s instanceof Student);//①
    7.         System.out.println(s instanceof Person);//②
    8.         System.out.println(p1 instanceof Student); //③
    9.         System.out.println(p2 instanceof Student);//④
    10.         System.out.println(new Student() instanceof Student);//⑤
    11.         System.out.println(new Student() instanceof Person);//⑥
    12.         System.out.println(null  instanceof Person);//⑦
    13.     }
    14. }

    【例05_11】中,语句①-⑦ 使用instanceof运算符进行了7次运算,这些运算的结果分别是:true、true、false、true、true、true、false。下面逐一分析每条语句的运算过程。语句① 中,引用s指向了Student类的对象,所以运算结果为true。语句② 中,s所指向的对象属于Student类,而Student又是Person的子类,所以运算结果也为true。语句③ 中,p1所指向的是一个Person类对象,然而并非所有Person类对象都属于Student类,所以运算结果为false。语句④中,引用p2的类型虽然是Person,但它实际指向的却是一个Student类的对象,所以运算结果为true。语句⑤、⑥实际上是语句①、②的翻版,只不过是把instanceof运算符左边的引用换成了对象,所以运算结果与语句①、②的运算结果相同,均为true。语句⑦是一种较为特殊的情况,instanceof运算符左边是空对象null。在Java语言中,只要空对象出现在instanceof运算符左边,其运算结果都为false,所以语句⑦的运算结果为false。

    除阅读文章外,各位小伙伴还可以点击这里观看我在本站的视频课程学习Java!

  • 相关阅读:
    【iOS 16升级必备】如何备份iPhone数据?
    第四章 :Spring Boot 配置文件指南
    Memcached 未授权访问漏洞验证
    字符串哈希
    无处不在的PDCA
    Java_IO流
    智慧校园管理在疫情防控中的作用有哪些?
    解锁知识管理3.0,生成式人工智能洞察新时代
    【c++随笔08】可变参数——va_list、va_start、va_end、va_arg
    2020CCPC 威海站 个人题解
  • 原文地址:https://blog.csdn.net/shalimu/article/details/128022340