Java中引用类型的检查

简介: 本章重点内容。有时候需要在运行时判断一个对象是否属于某个引用类型,这是可以引用instanceof运算符

引用类型的检查


本章重点内容。

有时候需要在运行时判断一个对象是否属于某个引用类型,这是可以引用instanceof运算符。instanceof运算符语法格式如下:

> obj instanceof type

obj是一个对象,type是引用类型,如果obj对象是type引用类型实例,则返回true,否则返回false。

话不多说,直接上代码:

package com.three;
//引用类型的检查
public class Person {
    protected   String name;
    protected int age;
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString(){
        return "Person [name="+name+", age="+age+"]";
    }
}
//继承Person类
class Woker extends Person{
    private String factory;
    public Woker(String name, int age,String factory) {
        super(name, age);
        this.factory = factory;
    }
    @Override
    public String toString(){
        return "Worker [factory="+factory+",name="+name+",age="+age+"]";
    }
}
//继承Person类
class Student extends Person{
    String school;
    public Student(String name, int age,String school) {
        super(name, age);
        this.school =school;
    }
    @Override
    public String toString(){
        return "Student [school="+school+", name="+name+", age="+age+"]";
    }
}
//调用代码
class Ssds{
    public static void main(String[] args) {
        Student student1 = new Student("张三",18,"清华大学");
        Student student2 = new Student("李四",20,"清华大学");
        Student student3 = new Student("王五",21,"清华大学");
        Woker woker1 = new Woker("张大娘",39,"电厂");
        Woker woker2 = new Woker("李大爷",34,"水厂");
//定义一个数组来存储对象
        Person[] people = {student1,student2,student3,woker1,woker2};
        int studentcount = 0;
        int workcount = 0;
//for的增强语句,item为对象,
        for(Person item:people){
//            引用类型的检查
            if(item instanceof Student){
                studentcount++;
            }
            else if(item instanceof Woker){
                workcount++;
            }
        }
        System.out.printf("工人人数:%d,学生人数:%d",workcount,studentcount);
    }
}

输出结果如下:

工人人数:2,学生人数:3
相关文章
|
4月前
|
缓存 算法 Java
Java面试题:深入探究Java内存模型与垃圾回收机制,Java中的引用类型在内存管理和垃圾回收中的作用,Java中的finalize方法及其在垃圾回收中的作用,哪种策略能够提高垃圾回收的效率
Java面试题:深入探究Java内存模型与垃圾回收机制,Java中的引用类型在内存管理和垃圾回收中的作用,Java中的finalize方法及其在垃圾回收中的作用,哪种策略能够提高垃圾回收的效率
41 1
|
19天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
19天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
17天前
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
|
1月前
|
Java
让星星⭐月亮告诉你,Java异常分类[Throwable(Error/Exception(RuntimeException/其他异常)) 检查时异常 非检查时异常]
本文深入解析了Java异常处理机制,重点介绍了`Throwable`类及其子类`Error`和`Exception`,并通过实例代码、流程图和表格详细解释了异常的分类、区别及处理方法,帮助读者掌握异常处理的关键技巧,提升程序的稳定性和健壮性。
47 1
|
1月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
23 1
|
21天前
|
存储 Java 编译器
[Java]基本数据类型与引用类型赋值的底层分析
本文详细分析了Java中不同类型引用的存储方式,包括int、Integer、int[]、Integer[]等,并探讨了byte与其他类型间的转换及String的相关特性。文章通过多个示例解释了引用和对象的存储位置,以及字符串常量池的使用。此外,还对比了String和StringBuilder的性能差异,帮助读者深入理解Java内存管理机制。
18 0
|
6月前
|
Java 编译器
Java一分钟之——异常分类:检查异常与运行时异常
【5月更文挑战第20天】Java异常处理分为检查异常(Checked Exceptions)和运行时异常(Unchecked Exceptions),两者在编译期处理方式不同。检查异常需捕获或声明,如`IOException`,而运行时异常如`NullPointerException`在运行时终止程序。常见问题包括不恰当的异常使用、过度捕获和忽略异常信息。避免策略包括正确区分异常类型、具体捕获和处理异常信息。示例代码展示了如何处理这两种类型的异常。理解并妥善处理异常能提升程序的健壮性和可维护性。
129 4
|
3月前
|
存储 搜索推荐 Java
|
5月前
|
缓存 Java 开发者
深入理解Java的五种引用类型
深入理解Java的五种引用类型