zoukankan      html  css  js  c++  java
  • java:复写equals实例

    class User
    {
        String name;
        int age;
        /*
        *比较过程思路:
        *1、两个对象指向位置相同,那么他们就相等,return后跳出函数,不再往下执行
        *2、指向位置不同,有3情况
        *a:这两对象类型相同,并且内容相同,也属于相等
        *b:类型相同,内容不同,属于不等;
        *c:类型不同,属于不等
        */
        public boolean equals(Object obj){
            //1、指向位置相同,指定同一对象
            if(this == obj){
                return true;
                }
            
    
            //2、指向位置不同
            //能调用这里的equals,肯定是生成了User对象的,所以this肯定是User类型
            //判断obj是不是User类型,如果是就跟this为同一类型
            boolean b =obj instanceof User;
            if(b){
                /*
                *类型相同,obj为User类型,而跟this位置不同的对象(第1步已证明)
                *obj来源可能是:
                *User obj = new User();
                *或 
                *Object obj =new Object(); //Object是 User的父类
                */
    
                //obj向下转型为User对象,以便一定能调用User里面的值
                    User u =(User)obj;
    //这里的equals是用name调用的(jdk里面String复写过的equals方法),不是当前类的equals
    //基本数据类型用==比,引用数据类型用equals比 if(this.age == u.age && this.name.equals(u.name)){ return true; }else{ return false; } }else { //类型不同,不是user对象,不等 return false; } } }
    class Test
    {
        public static void main(String args[]){
            //测试一:同地址,相等
            User u1 = new User();
            User u2 = u1;
            u1.name="sss";
            boolean b = u1.equals(u2);
            System.out.println(b);
    
            //测试二:地址不同,类型、内容相同,相等
            User u3 = new User();
            User u4 = new User();
            u3.name="sss";
            u4.name="sss";
            boolean b2 = u3.equals(u4);
            System.out.println(b2);
        }
    }

    其他:

    java:String使用equals和==比较的区别

  • 相关阅读:
    Ftp、Ftps与Sftp之间的区别
    Previous Workflow Versions in Nintex Workflow
    Span<T>
    .NET Core 2.0及.NET Standard 2.0 Description
    Announcing Windows Template Studio in UWP
    安装.Net Standard 2.0, Impressive
    SQL 给视图赋权限
    Visual Studio for Mac中的ASP.NET Core
    How the Microsoft Bot Framework Changed Where My Friends and I Eat: Part 1
    用于Azure功能的Visual Studio 2017工具
  • 原文地址:https://www.cnblogs.com/tinyphp/p/3771989.html
Copyright © 2011-2022 走看看