為什麼要重寫toString 方法

2021-07-14 16:40:57 字數 1489 閱讀 2353

tostring()方法是object類裡的方法,所有類都繼承自object,因此所有類都擁有tostring()方法。
tostring

public string tostring()

返回該物件的字串表示。通常, tostring 方法會返回乙個「以文字方式表示」此物件的字串。結果應是乙個簡明但易於讀懂的資訊表示式。建議所有子類都重寫此方法。

返回:

該物件的字串表示形式。

下面我們舉例說明:

class actor

public string getname()

public void setname(string name)

public string tostring()}

class comedian extends actor

public void set(string name,int age)

public string tostring()

public int getage()

public void setage(int age) public class d602 }

輸出為:

lianxi.comedian@1db9742

i』m a acotr,my name is tom i』m 16

i』m a actor,my name is tom i』m 16

i』m a acotr,my name is bin i』m 19

首先注釋掉我們重寫的兩個tostring方法

預設的tostring()方法輸出乙個物件名時的格式:

object 類的 tostring 方法返回乙個字串,該字串由類名(物件是該類的乙個例項)、at 標記符「@」和此物件雜湊碼的無符號十六進製制表示組成。換句話說,該方法返回乙個字串,它的值等於:

getclass().getname() + 『@』 + integer.tohexstring(hashcode())

首先注釋掉我們重寫的兩個tostring方法,輸出物件p,結果為:

lianxi.comedian@1db9742

去掉注釋:

i』m a acotr,my name is tom i』m 16

倘若我們在沒有重寫tostring方法的情況下輸出i'm a acotr,my name is tom i'm 16這句話的話我們需要寫的**是:
system.out.println(「i』m a actor,my name is 「+com.getname()+」 i』m 「+com.getage());

**比較繁瑣。

重寫tostring方法的目的就是為了方便輸出,比如system.out.println(com),括號裡面的com是乙個物件名,如果不是string型別的話,就自動呼叫com的tostring()方法。

簡而言之就是為了方便輸出。

為什麼重寫toString方法

tostring方法來自於基類object如下 public string tostring 而我們為什麼在自己建立的類中需要經常性的重寫tostring方法呢?應用 在前後端分離的情況下,當前端向伺服器端發起請求時,伺服器端會將前端傳來的多個鍵值對資料封裝成乙個物件,而在 除錯過程中,我們需要具體...

為什麼要重寫RedisTemplate?

我們知道springboot官方給出了2種例項化方式,分別是redistemplate和 redistemplate 這兩種或多或少都有一些問題,第一種對key所採用的序列化方式是jdkserializationredisserializer 由此種方式序列化的key在存入redis資料庫時會被轉為...

為什麼要重寫hashcode 方法

j a中的集合 collection 有兩類,一類是list,再有一類是set。前者集合內的元素是有序的,元素可以重複 後者元素無序,但元素不可重複。那麼我們怎麼判斷兩個元素是否重複呢?這就是object.equals方法了。通常想查詢乙個集合中是否包含某個物件,就是逐一取出每個元素與要查詢的元素進...