package test2;
/**
* equals()和toString()方法的使用
* 两个方法都继承与根对象Object
* 1.对象继承toString()方法后,应对其进行重写,该方法默认打印对象的hashcode值
* 2.equals()方法默认比较的是两个对象的hashcode值,即比较对象的在堆栈中的引用值
* 应该根据需求对其进行重写
*/
public class EuqalsAndtoString {
public static void main(String[] args) {
Person Tom = new Person(11, "Tom");
Person Jone = new Person(12, "Jone");
//打印重写后的toString()方法
System.out.println(Tom.toString());
System.out.println(Jone.toString());
//判断是否是相同对象
compare(Tom, Jone);
//将Tom的引用赋值给Frank,再进行判断
Person Frank = Tom;
compare(Frank, Tom);
}
private static void compare(Person Tom, Person Jone) {
if(Tom.equals(Jone)){
System.out.println("是同一个人");
}else{
System.out.println("不是同一个人呢");
}
}
}
class Person{
Person(int age,String name){
this.age = age;
this.name = name;
}
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
//判断两个对象是否引用地址相同,如果相同则说明指向同一对象
if(this==obj){
return true;
}
//判断两个对象是否是相同类型,如果不同则说明根本不是一个对象
if(obj instanceof Person){
Person p = (Person)obj;
//字符串的比较不能用==判断,必须调用String类重写的equals方法进行判断
return this.getAge()== p.getAge() && this.getName().equals(p.getName());
}else{
return false;//throw new ClassCastExcption("类型不同");
}
}
@Override
/*
* 重写toString()方法
*/
public String toString() {
return "名称:"+this.name+" 年龄:"+this.age;
}
}
equals()和toString()方法的使用
最新推荐文章于 2024-05-28 16:39:24 发布