JavaSE基礎知識——Object類中的toString()方法
阿新 • • 發佈:2021-10-30
JavaSE基礎知識——Object類中的toString()方法
目錄
- 1. 什麼是toString()方法
- 2. toString()方法的使用
- 3. 為什麼要重寫toString()方法
- 4. toString()方法的示例程式碼
- 5. eclipse中重寫toString()方法的快捷鍵
1. 什麼是toString()方法
- toString()方法在Object類中定義,其返回值是String型別,返回類名和它
的引用地址。 - 在進行String與其它型別資料的連線操作時,自動呼叫toString()方法
Date now=new Date(); System.out.println(“now=”+now); 相當於 System.out.println(“now=”+now.toString());
- 可以根據需要在使用者自定義型別中重寫toString()方法
如String 類重寫了toString()方法,返回字串的值。
s1=“hello”;
System.out.println(s1);
//相當於System.out.println(s1.toString());
- 基本型別資料轉換為String型別時,呼叫了對應包裝類的toString()方法
int a=10; System.out.println(“a=”+a);
- 它通常只是為了方便輸出,比如System.out.println(xx),括號裡面的“xx”如果不是String型別的話,就自動呼叫xx的toString()方法
2. toString()方法的使用
- 當我們輸出一個物件的引用時,實際上就是呼叫當前物件的toString()
- Object類中toString()的定義:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } //Object類的 toString() 方法返回一個字串,該字串由類名(物件是該類的一個例項)、at 標記符“@”和此物件雜湊碼的無符號十六進位制表示組成。換句話說,該方法返回一個字串,它的值等於: //getClass().getName() + '@' + Integer.toHexString(hashCode())
- 像String、Date、File、包裝類等都重寫了Object類中的toString()方法。 使得在呼叫物件的toString()時,返回"實體內容"資訊。
如下程式碼所示:
public class ToStringTest {
public static void main(String[] args) {
String str = new String("MM");
System.out.println(str);//MM
Date date = new Date(4534534534543L);
System.out.println(date.toString());//Mon Sep 11 08:55:34 GMT+08:00 2113
}
}
- 自定義類也可以重寫toString()方法,當呼叫此方法時,返回物件的"實體內容"。
3. 為什麼要重寫toString()方法
先看如下程式碼:
public class toStringTest {
public static void main(String[] args){
Object A = new Object();
System.out.println(A);
System.out.println(A.toString());
}
}
輸出結果:
這是直接使用tostring的時候返回的東西。
java.lang.Object@15db9742
java.lang.Object@15db9742
如果在類中沒有重寫ToString方法,預設使用的是Object的toString方法輸出格式。這個時候,物件就會直接顯示hash碼。
如果在類中重寫toString方法,那麼輸出格式就會按照我們定義的方式輸出這個物件,因此可以這樣理解:
重寫toString是對物件在列印輸出時候的一種格式化。這樣做符合業務邏輯,顯示結果人性化。
4. toString()方法的示例程式碼
示例程式碼1:
class ToStringExe{
@Override
public String toString() {
return "toString方法已經被改寫了";
}
}
public class toStringTest{
public static void main(String[] args) {
ToStringExe A = new ToStringExe();
System.out.println(A);
System.out.println(A.toString());
}
}
輸出結果:
toString方法已經被改寫了
toString方法已經被改寫了
5. eclipse中重寫toString()方法的快捷鍵
勾上需要輸出的變數之後在程式碼中則會自動新增下述程式碼
@Override
public String toString() {
return "ToStringExe [name=" + name + ", age=" + age + "]";
}
示例程式碼2:
class ToStringExe{
String name;
int age;
@Override
public String toString() {
return "ToStringExe [name=" + name + ", age=" + age + "]";
}
}
public class toStringTest{
public static void main(String[] args) {
ToStringExe A = new ToStringExe();
System.out.println(A);
System.out.println(A.toString());
}
}
輸出結果:
ToStringExe [name=null, age=0]
ToStringExe [name=null, age=0]