日志文章

2019-12-15 aflfte2011

equals的使用方法

package com.aflfte.oo2;
/**
 * equals方法的使用与重写
 * @author root
 *==与equals的不同在于==是对比两个对象是不是相同,equals可经过重写自己定义对比方式可根据内容进行比较
 */
public class TestEquals {
    public static void main(String[] args) {
        Object obj;
        String str;
        User u1=new User(1000,"张三","123456");//新建一个User类对象符给内容id name pwd
        User u2=new User(1000,"李四","123456");
        System.out.println(u1==u2);//利用==输出对比两个对象是不是相同;
        System.out.println(u1.equals(u2));//利用equals对比两个对象是否相同;
        String str1=new String("t");
        String str2=new String("t");
        System.out.println(str1==str2);
        System.out.println(str1.equals(str2));
    }

}
class User{//定义一个User类并设置id name pwd三个属性;
    int id;
    String name;
    String pwd;
    public User(int id, String name, String pwd) {
        super();
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        return result;
    }//这部分方法块可有可无
    @Override
    public boolean equals(Object obj) {//重写equals按照id进行比较
        if (this == obj)//如果两边是同一个对象就直接返回true
            return true;
        if (obj == null)//如果对象为空直接返回false
            return false;
        if (getClass() != obj.getClass())//如果对比双方的类型不相同直接返回false
            return false;
        User other = (User) obj;//这里进行一下强制转型操作
        if (id != other.id)//对比两个对象id是否相同不同返回false相同返回true
            return false;
        return true;
    }
    
}

« 关于构造器的追溯问题 | Object的使用»