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);
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM