zoukankan      html  css  js  c++  java
  • Java中instanceof关键字的用法

    Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

    instanceof关键字的作用是判断一个对象是否是一个具体类的实例,我们在重写equals方法中要先判断是否是同一对象,之后再判断一个对象是否是另一个的实例,如果是判断各个属性值以判断是否是同一对象,不是一定不是同一对象。

    下面是String中equals的方法源码:


    也是先判断是否为同一对象,利用instanceof关键字判断是否是String的实例(任何字符串都是String的实例),如不是对字符串中每个字符进行比较

    下面是instanceof的简单举例:

    package dmeo_1;
    
    public class Student extends Person{
        
        public static void main(String[] args) {
    
            if ("a" instanceof String) {
                //所有的字符串都是String的实例
                System.out.println("字符串是Stringde实例");
            }
    
            //只是声明了对象并没有创建,所以instanceof判断是false
            Student s1 = null;
            Student s2 = null;
            if (s1 instanceof Student) {
                System.out.println("s1是Student的实例");
            }
            if (s2 instanceof Student) {
                System.out.println("s2是Student的实例");
            }
    
            //创建了对象实例,判断为true
            s1 = new Student();
            s2 = new Student();
            if (s1 instanceof Student) {
                System.out.println("s1是Student的实例");
            }
            if (s2 instanceof Student) {
                System.out.println("s2是Student的实例");
            }
    
            /*任何类的父类都是Object类,可以这样理解,我们在创建子类对象的时候,
            调用子类的构造方法时会默认调用父类无参的构造方法,其实是会创建父类的对象的,,有继承关系的可以判断出为true*/
            if (s1 instanceof Object) {
                System.out.println("s1是Object的实例");
            }
    
            Object obj = new Student();
            if (obj instanceof Student) {
                System.out.println("obj是Student的实例");
            }
    
            Student s3 = new Student();
            if (s3 instanceof Person) {
                System.out.println("s3是Student的父类Person的实例");
            }
        }
    }
    
    class Person{
    
    }
    

    输出:

    字符串是Stringde实例
    s1是Student的实例
    s2是Student的实例
    s1是Object的实例
    obj是Student的实例
    s3是Student的父类Person的实例

  • 相关阅读:
    连接到 ASP.NET 数据库
    ASP.NET数据库操作代码小结:SQL Server篇
    无法远程连接 SQL Server 2008
    使用 ADO.NET 来创建、读取、更新和删除数据
    User表引发的"FROM子句语法错误"
    传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确
    ANSI,Unicode,UTF8网页编码的区别【转】
    ASP.NET 数据库原理【转】
    Eval()时间格式化
    Eclipse下无法自动编译,或者WEBINF/classes目录下没文件,编译失败的解决办法
  • 原文地址:https://www.cnblogs.com/duzhentong/p/7816572.html
Copyright © 2011-2022 走看看