java實體類如果不重寫toString方法,會如何?
先認識一下Object
-
Object 類的 toString 方法
返回一個字串,該字串由類名(物件是該類的一個例項)、at 標記符“@”和此物件雜湊碼的無符號十六進位制表示組成。換句話說,該方法返回一個字串,它的值等於:
getClass().getName() + '@' + Integer.toHexString(hashCode())
2. 物件如果沒有父類,預設繼承Object。
如果沒重寫toString方法,則預設是Object的toString方法返回值:類名@雜湊瑪值;
packagecom.huojg.test; import java.io.Serializable; /* * 為什麼實體類要重寫toString方法 * 測試。實驗開始。。。。 * * * * **/ public class Test5{ private String name; private String sex; private int No; public void Show(){ System.out.println("這是我的展示方法!!!!"); } public String getName() {return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getNo() { return No; } public void setNo(int no) {this.No = no; } }
測試類
package com.huojg.test; public class Test6 { public static void main(String[] args) { Class<?> demo= null; try { demo=Class.forName("com.huojg.test.Test5"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Test5 test5= new Test5(); test5.setName("xiaoming"); test5.setNo(001); test5.setSex("man"); System.out.println(test5); } }
結果輸出:
[email protected]
Test5新增toString方法
package com.huojg.test; import java.io.Serializable; /* * 為什麼實體類要重寫toString方法 * 測試。實驗開始。。。。 * * * * **/ public class Test5{ private String name; private String sex; private int No; public void Show(){ System.out.println("這是我的展示方法!!!!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getNo() { return No; } public void setNo(int no) { this.No = no; } @Override public String toString() { return "Test5 [name=" + name + ", sex=" + sex + ", No=" + No + "]"; } }
再次測試輸出結果
Test5 [name=xiaoming, sex=man, No=1]
總結分析:
在類Test5中如果我們沒有重寫ToString方法。預設就是Object的toString方法輸出格式。
如果我們在Test5中重寫toString方法,那麼輸出格式就會按照我們定義的方式輸出這個物件,因此可以這樣理解:
重寫toString是對物件列印輸出的一種格式化。當你print一個物件是你需要這個物件在列印時展現的是什麼形態你就把toString重寫成你需要的返回形態。重寫hashcode主要是為了規定物件之間的比較方式。如果你把物件存入hash集合,集合就會對物件的hashcode進行比較以區分兩個物件是否是同一物件。
相關推薦
java實體類如果不重寫toString方法,會如何?
先認識一下Object Object 類的 toString 方法 返回一個字串,該字串由類名(物件是該類的一個例項)、at 標記符“@”和此物件雜湊碼的無符號十六進位制表示組成。換句話說,該方法返回一個字串,它的值等於:
Java物件重寫toString()方法,實現物件內容輸出
覆蓋父類toString()方法: public class Person { private String id; private String name; public Person(String id, String name) { this.id = id;
有關Java實體類中get、set方法和有參無參構造方法的個人見解。
結論:(總的來說,get和set方法就是為了能以得到和設定實體類中的私有屬性值,而一個類中至少要有一個構造方法,當沒有人為新增的時候,編譯器會自動加入一個隱式的無參構造方法,當有人為新增時,編譯器就不會自動添加了。無參構造方法的作用是為了比較方便的new出一個物
java實體類重寫toString()方法
實體類一般需要重寫toString()方法,在列印日誌時輸出引數的資訊。但是如果手動拼接實體類裡每個屬性和屬性值又比較麻煩,以下是常用的幾種方法。 利用Apache工具類ToStringBuilder //方法1 輸出物件名稱簡寫 屬性 屬性值(我常用這種方式) @Ove
MyBatis由淺入深學習總結之二:MyBatis解決Java實體類和資料庫表字段不一致方法總結
在此,首先說明一點任何永續性框架都需要解決一個問題,那就是Java實體類的欄位一般來說基本上會與資料庫表中欄位不一致,那麼它們是如何解決的呢?咱們以Hibernate和SpringJDBC為例說明一下; 1、Hibernate中一般通過XML對映和註解的方式解決不一致問題,
JAVA POJO類重寫toString方法
很多時候為了追蹤資料,查詢原因,需要重寫toString方法,下面推薦一個比較好用的方法: 使用Apache Commons Lang的ToStringBuilder類,有靜態方法可用 public String toString(){ return ToStringBuilder.
Effective Java 第三版——12. 始終重寫 toString 方法
print ring 並且 love returns 描述 expect rect 方式 Tips 《Effective Java, Third Edition》一書英文版已經出版,這本書的第二版想必很多人都讀過,號稱Java四大名著之一,不過第二版2009年出版,到現在
Java : 實體類不能序列化異常
serial 異常 序列 join col 添加 序列化 之間 是否 當修改實體類之後調用接口出現不能序列化的異常時,一定要檢查實體之間的關系是否都是正確的. could not serialize; nested exception is org.hibernate.ty
java筆記 類中不能直接呼叫方法
package feibonacci; public class Feibonacci { private int t1 = 1,t2 = 1; private int s = 0; System.out.print(t1+" "+t2+" ");/ /,報錯,類中只
Effective Java 第三版讀書筆記——條款12:總是重寫 toString 方法
雖然 Object 類提供了 toString 方法的實現,但它返回的字串通常不是類的使用者想要看到的。它由類名後跟一個 “ at ” 符號(@)和雜湊碼的無符號十六進位制表示組成,例如 [email protected]。toString 的通用約定要求,返回的字串應該是“一個簡潔但內容豐富的表示
【MyBatis】解決資料庫欄位名稱與Java實體類屬性名稱不一致問題
問題描述: 有時候在專案中會遇到資料庫欄位名稱與實體類屬性名稱取得不一樣的情況,如下: 資料庫裡的資料為: 此時,如果我們查詢該表的某條資料,Proj
Java反射實體類屬性(get ,set方法)
反射授予了你的程式碼訪問裝載進JVM內的Java類的內部資訊的許可權,並且允許你編寫在程式執行期間與所選擇的類的一同工作的程式碼,而不是在原始碼中。這種機制使得反射成為建立靈活的應用程式的強大工具,但是要小心的是,如果使用不恰當,反射會帶來很大的副作用。在這篇文章中,軟體諮
記得給類重寫toString()方法
在平時除錯程式碼時,你有沒有碰到過這樣的場景,在IDE里加上斷點,程式碼停在斷點上,你想要檢視某個變數的值,這個變數有時候不是一個基本型別的變數,它多數情況下會是一個物件或者集合。然後,你點選該物件前面的+,展開檢視它內部的各個成員變數的值...... 如果你對上述場景非常熟悉,那麼可以說,
Java重寫ToString()方法的意義
1、toString()就是是重寫,對於一般的物件來說都會有這個方法,其實這個方法的目的,主要就是將物件按字串的方式輸出出來:打個比方,比如一個People類,裡邊有name,age這兩個屬性, 如果你People p = new People(); p.toString(
在Mybatis中,解決資料庫欄位名與java實體類屬性名不一致的三種方式
在使用Mybatis來持久化資料庫時,有時候會碰到資料庫中表中的欄位與java實體類中屬性名不一致的情況,在這種情況下Mybatis是不能完成欄位的自動對映的。而通常情況下,資料庫及實體類是不應該被改的的。所以要在不改變資料庫以及實體類的情況下解決這個問題,下面是解決該問題
重寫——上轉型物件不能操作子類新增成員變數和方法但可以操作子類繼承和重寫的方法
上轉型物件不能操作子類新增成員變數和方法但可以操作子類繼承和重寫的方法 子類重寫父類的前提是;方法名一樣,引數型別和個數一樣。 舉一例可以說明之: class Father { public Father() { }public void shout(Object word
java 通過子類怎麼呼叫父類已經被重寫的方法
= =今天看書看到覆蓋和過載 我就在想能不能再例項化的子類中呼叫父類已經被覆蓋的方法 百度了很久 除了說super 貌似就不行了 也能在子類中做一個新方法來呼叫父類已經被覆蓋的方法 例如: import java.io.BufferedReader; pub
java中子類能不能繼承父類構造方法
結果有些和想象中的不一樣吧。 原因如下:其實每個子類構造方法的第一條語句,都是隱含地呼叫super(),如果父類沒有這種形式的建構函式,那麼在編譯的時候就會報錯。 所以父類中的構造方法是不能繼承的,但是在例項化子類的時候會呼叫父類的構造方法,這樣就能解釋下面這種情況了。面試題目1:指出下面
用jaxb方法將xml(帶名稱空間xmlns)轉為java實體類
關於xml檔案轉為java實體類,如果不帶名稱空間 “<m:”,用jaxb的unmarshaller方法,還有註解@XmlRootElement 等方法可以轉成功,但是xml包含了"<m:"字首(名稱空間)就有問題。網上找了好久也沒能解決。還請高手幫我看下。謝
11.JAVA-Object類之finalize(),clone(),toString()等方法覆寫
href this 都是 .html rac 回收 信息 ktr font 1.Object介紹 Object類是一個特殊的類,是所有類(包括數組,接口 )的父類,如果一個類沒有用extends明確指出繼承於某個類,那麽它默認繼承Object類,所以可以通過向上轉型的方法