Java 中equals和toString()方法重写

1,equals方法

(1)什么时候需要重写?

  如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals

(2)怎么重写?

class A
{ public int i;
  pulic A(int i)//构造函数
   {this.i=i;
   }
  public boolean equals(Object obj)//重写equals
   {A aa=(A)obj;
    if(this.i==aa.i)
      return true;
    else
     return flase;
   }
}
public class testEquals{
 public staric void main(String[] args){
   A aa1=new A(10);
   A aa2=new A(10);
   System.out.println(aa1.equals(aa2));
 }
}

(3)注意问题:

String类系统已经重写equals了,不必再重写;

另外区分equals和==

public class extendsPrivateTest {

public static void main(String[] args){  

    String str1=new String("China");

    String str2=new String("China");  

   System.out.println(str1.equals(str2));

   System.out.println(str1==str2);

    String str3="China";

    String str4="China";  

   System.out.println(str3.equals(str4));  

   System.out.println(str3==str4);  } }

 str1和str2放在堆里

true//equals已经被系统重写

false

str3和str4是放在数据区,都是指向一个数据

true

true

2.toString方法

(1)为什么需要重写toString?

Object类中的toString方法返回的是类的名字和该对象的哈希码组成的一个字符串,例,A@deced

而我们实际想用System.out.printf(类对象名)输出该对象的toStringd()方法返回的字符串不是上述的时,就必须重写toSring方法。

(2)怎么重写toString方法?

注意:为了实际需要,建议子类重写从父类Object继承的toString()方法

class Point{
  private int i,j;
  puvlic Point(int i,int j){
   this.i=i;
   this.j=j;
  }
  public String toString(){
   return "["+i+","+j+"]";
  }
}
public class testtoString{
  public static void main(String[] args){
     Point p1=new Point(1,3);
     System.out.println(p1);
  }
}
原文地址:https://www.cnblogs.com/xiaoxiaohui2015/p/5424581.html