當咱們直接打印定義的對象的時候,隱含的是打印toString()的返回值。

 

如下介紹的三種方法屬於Object:this

(1)  finalize方法:當一個對象被垃圾回收的時候調用的方法。對象

(2)  toString():是利用字符串來表示對象。字符串

當咱們直接打印定義的對象的時候,隱含的是打印toString()的返回值。get

能夠經過子類做爲一個toString()來覆蓋父類的toString()虛擬機

以取得咱們想獲得的表現形式,即當咱們想利用一個自定義的方式描述對象的時候,咱們應該覆蓋toString()垃圾回收

(3)equal程序

首先試比較下例:方法

String A=new String(「hello」);字符

String A=new String(「hello」);new

A==B(此時程序返回爲FALSE)

由於此時AB中存的是地址,由於建立了新的對象,因此存放的是不一樣的地址。

 

附加知識:

字符串類爲JAVA中的特殊類,String中爲final類,一個字符串的值不可重複。所以在JAVA VM(虛擬機)中有一個字符串池,專門用來存儲字符串。若是遇到String a=」hello」時(注意沒有NEW,不是建立新串),系統在字符串池中尋找是否有」hello」,此時字符串池中沒有」hello」,那麼系統將此字符串存到字符串池中,而後將」hello」在字符串池中的地址返回a。若是系統再遇到String b=」hello」,此時系統能夠在字符串池中找到 「hello」。則會把地址返回b,此時ab爲相同。

 

 

String a=」hello」;

System.out.println(a==」hello」);

系統的返回值爲true

 

故若是要比較兩個字符串是否相同(而不是他們的地址是否相同)。能夠對a調用equal:

System.out.println(a.equal(b));

equal用來比較兩個對象中字符串的順序。

a.equal(b)ab的值的比較。

 

 

注意下面程序:

student a=new student(「LUCY」,20);

student b=new student(「LUCY」,20);

System.out.println(a==b);

System.out.println(a.equal(b));

此時返回的結果均爲false

 

如下爲定義equal(加上這個定義,返回turefalse

public boolean equals(Object o){

  student s=(student)o;

  if (s.name.equals(this.name)&&s.age==this.age)

else return false;

}若是equals()返回的值爲

 

如下爲實現標準equals的流程:

public boolean equals(Object o){

  if (this==o) return trun;  //此時二者相同
  if (o==null) return false;

  if (! o instanceof strudent) return false;  //不一樣類

  studeng s=(student)o; //強制轉換

  if (s.name.equals(this.name)&&s.age==this.age) return true;

else return false;

}

 

以上過程爲實現equals的標準過程。

 

 練習:創建一個employee類,有String name,int id,double salary.運用getset方法,使用toString,使用equals

相關文章
相關標籤/搜索