equals、hashCode、toString

2020-06-01  本文已影响0人  wustzhy

User类 内对 equals、hashCode、toString 复写


public class User {
    String name;
    int age;
    
    public User() {
        // TODO Auto-generated constructor stub
    }
    
    public User(String name, int age) {
        // TODO Auto-generated constructor stub
        super();
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        //return super.toString();
        String rString = "name:" + name + ", " + "age:" + age; 
        return rString;
    }
    
    @Override   //以后工具可自动生成
    public int hashCode() {
        // TODO Auto-generated method stub
        //return super.hashCode();
        
        int r = 17;
        r = r*31 + age;
        r = r*31 + name.hashCode();
        return r;
    }
    
    @Override
    public boolean equals(Object obj) {
        // TODO Auto-generated method stub
//      return super.equals(obj);
        
        if (this == obj) {
            return true;
        }
        
        boolean b = obj instanceof User;
        if (b) {
            User u = (User)obj;
            if (this.name == u.name && this.age == u.age) {
                return true;
            }
            return false;
        }else {
            return false;
        }
    }
}

equals

public static void equals_test() {
    User u1 = new User();
    User u2 = new User();
    User u3 = new User();
    User u4 = u1;
    
    u1.name = "zhangsan";
    u1.age = 30;
    
    u2.name = "lisi";
    u2.age = 20;
    
    u3.name = "lisi";
    u3.age = 20;
    
    System.out.println(u1.equals(u2));
    System.out.println(u2.equals(u3));
    System.out.println(u1.equals(u4));
}

hashCode

public static void hashCode_test() {
    User u = new User("zhangs", 20);
    
    HashMap<User, String> map = new HashMap<User, String>();
    map.put(u, "abc");
    
    String s = map.get(u);
    System.out.println(s); // abc
    
    String s1 = map.get(new User("zhangs", 20));
    System.out.println(s1); // null,不同对象 hash值是不同的
    //对User内部复写hashCode(), 使与成员变量相关,那么不同对象 属性值相同的 map取值也相同了
    // abc
    
}

toString

public static void toString_test() {        
    User u = new User("zhangs", 20);
    System.out.println(u.toString()); // kkb_013_equals.User@d616cc44
    //复写toString方法后     // name:zhangs, age:20
    
}
上一篇下一篇

猜你喜欢

热点阅读