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的使用»
|