1. 程式人生 > 其它 >JavaSE基礎知識——Object類中的toString()方法

JavaSE基礎知識——Object類中的toString()方法

JavaSE基礎知識——Object類中的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()方法的使用


  1. 當我們輸出一個物件的引用時,實際上就是呼叫當前物件的toString()
  2. Object類中toString()的定義:
  public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
     }
//Object類的 toString() 方法返回一個字串,該字串由類名(物件是該類的一個例項)、at 標記符“@”和此物件雜湊碼的無符號十六進位制表示組成。換句話說,該方法返回一個字串,它的值等於:
//getClass().getName() + '@' + Integer.toHexString(hashCode())
  1. 像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
		
	}
}
  1. 自定義類也可以重寫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]