toString
创建好一个类,在类实例化对象的时候,打印输出类对象,会得到地址值,(类是引用类型),这个时候需要在类中对toString方法进行重写,
在eclipse菜单栏中Source–>Generate toString()
然后自动重写toString方法,再次打印输出就不是地址值。
equals
package 啊;
public class sss {
public static void main(String[] args) {
Fu fu=new Fu("张三",11);
Fu fu1=new Fu("李四",12);
System.out.println(fu);
System.out.println(fu1);
//将fu1的地址赋值给fu;
fu=fu1;
//进行比较,若相同则输出true;若不相同则输出false;
boolean b=fu.equals(fu1);
System.out.println(b);
}
}
结果
在没重新equals的时候,是比较对象的地址值,要是想比较对象的具体数值,需要对equals进行重写。
在eclipse菜单栏中Source–>Generate hashCode()and equals()…
然后自动重写equals方法,再次打印输出就比较地址值。而是比较具体的数值
在父类进行重写
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Fu other = (Fu) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
子类
package 啊;
public class sss {
public static void main(String[] args) {
Fu fu=new Fu("张三",11);
Fu fu1=new Fu("张三",11);
System.out.println(fu);
System.out.println(fu1);
//进行比较,若相同则输出true;若不相同则输出false;
boolean b=fu.equals(fu1);
System.out.println(b);
}
}
结果:
这个时候就是比较的对象的数值,名字和年龄。