Java直接輸出對象變成@.....的問題及解決
Java直接輸出對象變成@.....問題
為什么我用System.out.println()輸出一個對象會變成@.......的
例如 object.student@1d8d30f7
原因在此
(假設(shè)我的對象名是student s =new student ();)
1.以下代碼就是System.out.println(),中println,Java的底層代碼
public void println(Object x) { String s = String.valueOf(x);
可以發(fā)現(xiàn)出現(xiàn)了個String.valueOf(x),這個x此時就等于s也就等于new student ()
2.valueOf(x)的底層源碼就是下圖
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
這個obj就等于=x=s=new student(),此時return (obj == null) ? "null" : obj.toString();
運(yùn)用了三元運(yùn)算符,因?yàn)閛bj不等于null,所以直接執(zhí)行了表達(dá)式三,也就是obj.toString()。
3.toString()的底層源碼是
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
這個方法里面只有
return getClass().getName() + "@" + Integer.toHexString(hashCode());
所以在你的控制臺里面出現(xiàn)了 @.....什么的
至于為什么,是因?yàn)樵诶^承里面有個最終類也就是object,所有的類都直接或者間接繼承自object,你在你的類里面沒有寫toString,他就會默認(rèn)執(zhí)行object里面的指定代碼
所以.....在你的類里面加個toString方法就好了 ,也就是在被實(shí)例化的那個類,在我這篇文章里面是student
解決辦法
.eclipse的快捷鍵是 shift+alt+s
在student里面 按下 shift+alt+s 倒數(shù)第四個,選擇需要的變量,點(diǎn)擊生成,像下圖一樣,然后就去執(zhí)行下main方法就好了
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳談java中File類getPath()、getAbsolutePath()、getCanonical的區(qū)別
下面小編就為大家?guī)硪黄斦刯ava中File類getPath()、getAbsolutePath()、getCanonical的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07SpringBoot整合RocketMq實(shí)現(xiàn)分布式事務(wù)
這篇文章主要為大家詳細(xì)介紹了SpringBoot整合RocketMq實(shí)現(xiàn)分布式事務(wù)的相關(guān)知識,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-11-11去掉 IDEA 中 mybatis配置文件的局部背景顏色(圖解)
這篇文章通過圖文并茂的形式給大家介紹了去掉IntelliJ IDEA 中 mybatis配置文件的局部背景顏色及mybatis 對應(yīng)的 xml 文件警告的方法圖解,需要的朋友可以參考下2018-09-09SpringBoot集成ElasticSearch實(shí)現(xiàn)minio文件內(nèi)容全文檢索
這篇文章詳細(xì)介紹了如何在Spring?Boot項(xiàng)目中集成Elasticsearch和Kibana,包括Docker安裝、中文分詞器安裝、后端代碼實(shí)現(xiàn)以及前端查詢組件封裝,需要的朋友可以參考下2024-11-11取消idea雙擊shift鍵時出現(xiàn)的全局搜索的問題分析
這篇文章主要介紹了取消idea雙擊shift鍵時出現(xiàn)的全局搜索的問題分析,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-10-10