如下介紹的三種方法屬於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,此時a與b爲相同。
String a=」hello」;
System.out.println(a==」hello」);
系統的返回值爲true。
故若是要比較兩個字符串是否相同(而不是他們的地址是否相同)。能夠對a調用equal:
System.out.println(a.equal(b));
equal用來比較兩個對象中字符串的順序。
a.equal(b)是a與b的值的比較。
注意下面程序:
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(加上這個定義,返回ture或false)
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.運用get和set方法,使用toString,使用equals。