精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何優(yōu)雅地打印一個(gè)Java對(duì)象?

開(kāi)發(fā) 后端
你好呀,我是沉默王二,一個(gè)和黃家駒一樣身高,和劉德華一樣顏值的程序員。雖然已經(jīng)寫了十多年的 Java 代碼,但仍然覺(jué)得自己是個(gè)菜鳥(niǎo)(請(qǐng)?jiān)试S我慚愧一下)。

 你好呀,我是沉默王二,一個(gè)和黃家駒一樣身高,和劉德華一樣顏值的程序員。雖然已經(jīng)寫了十多年的 Java 代碼,但仍然覺(jué)得自己是個(gè)菜鳥(niǎo)(請(qǐng)?jiān)试S我慚愧一下)。

[[314032]]

在一個(gè)月黑風(fēng)高的夜晚,我思前想后,覺(jué)得再也不能這么蹉跎下去了。于是痛下決心,準(zhǔn)備通過(guò)輸出的方式倒逼輸入,以此來(lái)修煉自己的內(nèi)功,從而進(jìn)階成為一名真正意義上的大神。與此同時(shí),希望這些文章能夠幫助到更多的讀者,讓你在學(xué)習(xí)的路上不再寂寞、空虛和冷。

 

為了更好的輸入,我選擇 Stack Overflow 作為戰(zhàn)斗的第一線,畢竟很多前輩都在強(qiáng)烈推薦。本篇文章,我們來(lái)探討一下如何優(yōu)雅地打印一個(gè) Java 對(duì)象。

真沒(méi)想到,這個(gè)問(wèn)題的訪問(wèn)量像阿爾泰山一樣高,訪問(wèn)量足足有 29+ 萬(wàn)次,這不得了啊!說(shuō)明有很多很多的程序員被這個(gè)問(wèn)題困擾過(guò)。

來(lái)回顧一下提問(wèn)者的問(wèn)題吧。

提問(wèn)者定義了這樣一個(gè)類:

 

  1. public class Cmower { 
  2.     private String name
  3.  
  4.     public Cmower(String name) { 
  5.         this.name = name
  6.     } 
  7.  
  8.     public String getName() { 
  9.         return name
  10.     } 
  11.  
  12.     public void setName(String name) { 
  13.         this.name = name
  14.     } 

然后創(chuàng)建了一個(gè)該類的對(duì)象,并嘗試打印它:

 

  1. Cmower cmower = new Cmower("沉默王二"); 
  2. System.out.println(cmower); 

但是輸出的結(jié)果并不是他想要的:

 

  1. com.cmower.java_demo.stackoverflow.printObject.Cmower@355da254 

除此之外,他在打印數(shù)組的時(shí)候也出現(xiàn)了相似的問(wèn)題:

 

  1. Cmower [] cmowers = {new Cmower("沉默王二"), new Cmower("沉默王三")}; 
  2. System.out.println(cmowers); 

輸出結(jié)果為:

 

  1. [Lcom.cmower.java_demo.stackoverflow.printObject.Cmower;@4dc63996 

Cmower@355da254 和 [LCmower;@4dc63996 這樣的輸出結(jié)果代表著什么意思呢?怎么樣才能把 Cmower 類的 name 打印出來(lái)呢?以及如何打印一個(gè)對(duì)象的列表(數(shù)組或者集合)呢?

如果大家也被這樣的問(wèn)題困擾過(guò),或者正在被困擾,就請(qǐng)隨我來(lái),咱們肩并肩手拉手一起梳理一下這個(gè)問(wèn)題,并找出優(yōu)秀答案。Duang、Duang、Duang,打怪進(jìn)階嘍!

01、究竟發(fā)生了什么?

所有的 Java 對(duì)象都默認(rèn)附帶了一個(gè) toString() 的方法,當(dāng)我們嘗試打印這個(gè)對(duì)象的時(shí)候,該方法就會(huì)被調(diào)用。

 

  1. System.out.println(object);  // 調(diào)用 object.toString() 

toString() 方法由 Object 類(所有 Java 對(duì)象的超類)定義,該方法會(huì)返回一個(gè)看起來(lái)晦澀難懂的字符串:

1)Class 名,由包名和類名組成,比如 com.Cmower;

2)@ 連接符;

3)十六進(jìn)制的哈希碼。

來(lái)看一下該方法的源碼:

 

  1. public String toString() { 
  2.     return getClass().getName() + "@" + Integer.toHexString(hashCode()); 

數(shù)組和普通的 Java 對(duì)象類似,只有一點(diǎn)點(diǎn)不同——追蹤 Class 類的 getName()方法就可以印證這一點(diǎn)。

If this class object represents a class of arrays, then the internal form of the name consists of the name of the element type preceded by one or more '[' characters representing the depth of the array nesting.

大致的意思就是,如果是一個(gè)數(shù)組的話,Class 名的前面會(huì)有一個(gè)或者多個(gè)英文中括號(hào)“[”,表示數(shù)組的維度(一維數(shù)組為一個(gè)“[”,二維數(shù)組為兩個(gè)“[”),然后再緊跟一個(gè)元素的類型首字母。

 

 

 

 

這就是為什么對(duì)象數(shù)組的前綴是“[L”的原因。是不是有一種恍然大悟的感覺(jué)?

 

02、自定義輸出

如果想在打印的時(shí)候輸出自己預(yù)期的結(jié)果,就必須在自定義類中重寫 toString() 方法,來(lái)看例子。

 

  1. public class Cmower { 
  2.     private String name
  3.     // 省略構(gòu)造方法和 getter/setter 
  4.  
  5.     @Override 
  6.     public String toString() { 
  7.         return name
  8.     } 

當(dāng)我們?cè)俅未蛴?Cmower 對(duì)象時(shí),輸出結(jié)果就不再是 com.Cmower@355da254 了。

 

  1. 沉默王二 

但是這樣的結(jié)果并不會(huì)令我們滿意,它有些突兀,沒(méi)法表示對(duì)象的類型。更優(yōu)雅的做法是這樣的:

 

  1. public class Cmower { 
  2.     private String name
  3.     // 省略構(gòu)造方法和 getter/setter 
  4.  
  5.     @Override 
  6.     public String toString() { 
  7.         return getClass().getSimpleName() + "[name=" + name + "]"
  8.     } 

再次打印 Cmower 對(duì)象,輸出結(jié)果為:

 

  1. Cmower[name=沉默王二] 

這樣的形式不僅看起來(lái)美觀,還能夠在調(diào)試的時(shí)候給出有用的信息。但是,有時(shí)候我們不想重寫 toString() 方法(想保留原有的打印格式 ClassType@123121),又想打印該對(duì)象的信息,那么最好定義一個(gè)新的方法,比如說(shuō) toMyString() 方法。

03、自動(dòng)化輸出

IDE(Eclipse 或者 Intellj IDEA) 通常會(huì)提供一種針對(duì)類的字段的輸出格式,用來(lái)覆蓋 toString() 方法。

 

  1. @Override 
  2. public String toString() { 
  3.     return "Cmower{" + 
  4.             "name='" + name + '\'' + 
  5.             '}'

另外,一些開(kāi)源的第三方類庫(kù)也會(huì)提供這樣的功能,比如說(shuō):

1)Apache Commons Lang 的 ToStringBuilder。

使用方法:

 

  1. @Override 
  2. public String toString() { 
  3.     return ToStringBuilder.reflectionToString(this); 

輸出結(jié)果:

 

  1. com.cmower.printObject.Cmower@355da254[name=沉默王二] 

2)Google Guava 的 MoreObjects

使用方法:

 

  1. @Override 
  2. public String toString() { 
  3.     return MoreObjects.toStringHelper(this) 
  4.             .add("name", getName()) 
  5.             .toString(); 

輸出結(jié)果:

 

  1. Cmower{name=沉默王二} 

3)Lombok 的 @toString 注解(IDE 需要先安裝 Lombok 的插件)

使用方法:

 

  1. @ToString 
  2. public class Cmower { 
  3.  
  4.     private String name
  5.  
  6.     // 省略構(gòu)造方法和 getter/setter 

只需要一個(gè) @toString 注解,不需要覆蓋 toString() 方法。

輸出結(jié)果:

 

  1. Cmower(name=沉默王二) 

04、打印對(duì)象列表(數(shù)組或者集合)

上述內(nèi)容已經(jīng)把打印單個(gè)對(duì)象的事情嘮明白了,are you ok?接下來(lái),我們來(lái)說(shuō)道說(shuō)道打印對(duì)象列表的事兒。

1)數(shù)組

Arrays.toString() 可以將任意類型的數(shù)組轉(zhuǎn)成字符串,包括基本類型數(shù)組和引用類型數(shù)組。代碼示例如下。

 

  1. Cmower[] cmowers = {new Cmower("沉默王二"), new Cmower("沉默王三")}; 
  2. System.out.println(Arrays.toString(cmowers)); 

輸出結(jié)果:

  1. [Cmower{name='沉默王二'}, Cmower{name='沉默王三'}] 

2)集合

對(duì)于集合來(lái)說(shuō),可以直接打印就能輸出我們預(yù)期的結(jié)果。代碼示例如下。

 

  1. List<Cmower> list = new ArrayList<>(); 
  2. list.add(new Cmower("沉默王二")); 
  3. list.add(new Cmower("沉默王三")); 
  4. System.out.println(list); 

輸出結(jié)果:

 

  1. [Cmower{name='沉默王二'}, Cmower{name='沉默王三'}] 

05、鳴謝

好了,我親愛(ài)的讀者朋友,以上就是本文的全部?jī)?nèi)容了。能在疫情期間堅(jiān)持看技術(shù)文,二哥必須要伸出大拇指為你點(diǎn)個(gè)贊。

責(zé)任編輯:華軒 來(lái)源: 沉默王二
相關(guān)推薦

2021-01-04 09:12:31

集合變量

2021-03-24 10:20:50

Fonts前端代碼

2017-12-14 14:17:08

Windows使用技巧手冊(cè)

2020-12-08 08:08:51

Java接口數(shù)據(jù)

2024-11-13 16:37:00

Java線程池

2025-01-26 09:35:45

2020-09-25 11:30:20

Java判空代碼

2020-04-10 10:22:12

Java判空編程語(yǔ)言

2022-03-01 21:25:30

對(duì)象代碼Proxy

2021-05-12 22:07:43

并發(fā)編排任務(wù)

2022-05-13 21:20:23

組件庫(kù)樣式選擇器

2021-01-18 13:17:04

鴻蒙HarmonyOSAPP

2020-03-26 11:04:00

Linux命令光標(biāo)

2024-04-24 12:34:08

Spring事務(wù)編程

2021-01-28 14:53:19

PHP編碼開(kāi)發(fā)

2022-05-24 06:07:48

JShack用戶代碼

2024-01-26 12:35:25

JavaScript項(xiàng)目軟件包

2023-05-12 14:14:00

Java線程中斷

2022-05-16 08:17:36

裝飾器模式

2025-07-08 08:37:50

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文无字幕一区二区三区| 国产一级在线免费观看| 亚洲av人无码激艳猛片服务器| 天堂综合在线播放| 久久综合色婷婷| 久久精品成人欧美大片| 久久久综合亚洲91久久98| 波多野结衣久久久久| 一区一区三区| 99在线精品观看| 欧美巨大黑人极品精男| 亚洲综合欧美激情| 大地资源中文在线观看免费版| 亚洲va久久久噜噜噜久久| 亚洲自拍偷拍欧美| 91|九色|视频| 亚洲伦理一区二区三区| 精品国产黄a∨片高清在线| 久久久久九九视频| 欧美在线观看视频| 自拍视频一区二区| 草草在线视频| 97久久久精品综合88久久| 久久久之久亚州精品露出| 原创真实夫妻啪啪av| 成人在线网址| 国产美女精品人人做人人爽| 最近的2019中文字幕免费一页| 熟女人妇 成熟妇女系列视频| 亚洲人成色777777老人头| 99精品视频免费全部在线| 精品黑人一区二区三区久久| 17c丨国产丨精品视频| 国产黄色片网站| 欧美人与禽猛交乱配视频| 日韩欧美亚洲一区二区| 韩国无码av片在线观看网站| 午夜精品久久久久久久96蜜桃| 欧美黄色一区| 精品国产乱码久久久久久蜜臀| 999久久欧美人妻一区二区| 国产三级电影在线| 久草在线在线精品观看| 久热精品视频在线观看| a级片在线观看视频| 色网在线免费观看| 国产欧美一区二区在线观看| 成人精品视频99在线观看免费| 免费在线观看黄色小视频| 欧美美乳视频| 3d成人h动漫网站入口| 免费的av在线| 欧美 日韩 国产 成人 在线 91| 在线日韩中文| 一区二区三区视频免费| 一级黄色片国产| 国产精品偷拍| 久久精品视频免费| 国产成人鲁鲁免费视频a| 一二三四国产精品| 亚洲精品影片| 一本久久综合亚洲鲁鲁五月天| 午夜精品一区二区在线观看的| 国产麻豆精品一区| 国产日韩欧美| 欧美精品一区二区三区高清aⅴ | h视频在线免费| 国产色综合一区| 亚洲乱码国产乱码精品天美传媒| 国产精品美女一区| 亚洲欧洲另类| 97视频免费看| 91传媒免费观看| 99久久精品国产亚洲精品| 精品成人佐山爱一区二区| 国产性猛交96| 久久婷婷五月综合色丁香| 欧美无砖专区一中文字| 国产精品网站免费| 免费a级人成a大片在线观看| 99久久久久免费精品国产| 国产尤物99| 国产精品久久久久久久一区二区| 国模大尺度一区二区三区| 热99久久精品| 国产稀缺真实呦乱在线| 久久久久久久久久久久久久| 亚洲欧美另类国产| 污污免费在线观看| 深爱激情久久| 久久偷看各类女兵18女厕嘘嘘| 538任你躁在线精品视频网站| 久久爱www成人| 日韩最新av在线| 娇妻被老王脔到高潮失禁视频| 美女网站色精品尤物极品姐弟| 91精品国产91久久综合桃花| 色国产在线视频| 中文字幕一区二区三区四区久久| 精品视频久久久| 亚洲色图欧美日韩| 成人a'v在线播放| 亚洲视频在线免费看| 黄色污在线观看| 波多野结衣一区| 国内精品国产三级国产在线专| 波多野结衣电车| 天使萌一区二区三区免费观看| 91国产美女视频| 日本熟妇毛茸茸丰满| 男男成人高潮片免费网站| 国产成人一区二区三区小说| 国产日韩欧美中文字幕| 91免费看`日韩一区二区| 久久久久欧美| 国产日产一区二区| 专区另类欧美日韩| 青青草原国产免费| 麻豆av在线导航| 欧美日韩中文字幕日韩欧美| 哪个网站能看毛片| 美女100%一区| 欧美va在线播放| 国产精品69久久久久孕妇欧美| 日本一二区不卡| 色黄久久久久久| 亚洲 欧美 视频| 久久精品午夜| 国产精品久久久av| 亚洲一区 中文字幕| 久久99久久99小草精品免视看| 好吊色欧美一区二区三区四区| 日韩欧美在线观看一区二区| 久久久午夜精品| 99国产精品白浆在线观看免费| 日本午夜精品久久久久| 亚洲视频在线免费观看| 国产精品久免费的黄网站| 日韩av电影天堂| 成人在线观看视频网站| 岛国在线大片| 色国产综合视频| 亚洲精品永久视频| 成人羞羞网站入口| 热re91久久精品国99热蜜臀| 日中文字幕在线| 婷婷久久综合九色综合伊人色| 日本爱爱免费视频| 国产专区精品| 日韩高清免费观看| 亚洲色图100p| 美国一区二区三区在线播放| 国产91亚洲精品一区二区三区| 色婷婷综合视频| 国产精品妹子av| 黄页网站在线观看视频| av在线一区不卡| 欧美电影免费观看完整版| 国产一区二区精彩视频| 蜜乳av一区二区| 中文字幕一区二区三区四区五区 | 日韩在线视频观看| 一级特黄录像免费看| 成人av在线网站| 亚洲 国产 日韩 综合一区| 日韩在线免费| 精品久久久久久久人人人人传媒| 免费人成在线观看| 免费欧美在线视频| 亚洲欧美日韩在线综合| 国产精品va视频| 欧美高清视频在线| 在线播放一级片| 亚洲欧洲日韩女同| 国产精品嫩草69影院| 久久高清免费| 91久久久在线| av片在线看| 黄网站色欧美视频| 白白色免费视频| 亚洲激情网址| 热舞福利精品大尺度视频| 9lporm自拍视频区在线| 911精品国产一区二区在线| 欧美黄片一区二区三区| 91亚洲永久精品| 香蕉视频网站入口| 欧美日本在线| 欧美区高清在线| 激情黄产视频在线免费观看| 有码中文亚洲精品| 国产极品999| 色婷婷av一区二区三区大白胸| 在线观看黄网址| 97久久精品人人做人人爽50路 | 日韩不卡在线| 色综合久久悠悠| 欧美捆绑视频| 亚洲成av人影院在线观看网| 黄色片免费网址| 国产精品99在线观看| 国产高清在线一区二区| 色豆豆成人网| 国内精品久久久久久| av福利在线播放| 亚洲国产欧美一区二区丝袜黑人| 久久国产露脸精品国产| 国产午夜久久久久| 一级黄色电影片| 麻豆一区二区在线| 欧美色图色综合| 午夜a一级毛片亚洲欧洲| 91精品国产91久久久久久| 米奇精品一区二区三区| 日韩电影第一页| 草逼视频免费看| 欧美日韩午夜在线视频| 亚洲色图27p| 91麻豆福利精品推荐| av在线免费观看不卡| 日韩国产高清影视| 亚洲欧洲精品一区二区三区波多野1战4| 视频精品一区| 国内精品模特av私拍在线观看 | 欧美美最猛性xxxxxx| a黄色在线观看| 日韩成人在线视频网站| 丰满肉嫩西川结衣av| 亚洲午夜精品久久久久久久久| 一级黄色片毛片| 国产尤物一区二区在线| h无码动漫在线观看| 91麻豆精品国产91久久久平台| 91精品国产综合久久香蕉的用户体验| 免费高清在线观看| 亚洲最大在线视频| 精品成人一区二区三区免费视频| 欧美视频在线一区| 少妇高潮av久久久久久| 国产精品美女久久福利网站| 播金莲一级淫片aaaaaaa| 日本中文字幕一区二区视频| 精品一卡二卡三卡| 久久精品123| 99精品免费在线观看| 在线综合视频| 国产黄视频在线| 亚洲综合好骚| 免费看啪啪网站| 色综合天天爱| 中日韩在线视频| 五月婷婷亚洲| 黄色www在线观看| 91精品一区国产高清在线gif| 伊人av成人| 91成人看片| 国产精品igao激情视频| 国内精品久久久久久久97牛牛 | 8090成年在线看片午夜| 美女高潮在线观看| 欧日韩在线观看| 日本精品不卡| 不卡伊人av在线播放| 成人av黄色| 色综合久久精品亚洲国产 | 欧美在线观看日本一区| 日韩大尺度黄色| 国产精品自拍小视频| 第四色日韩影片| 国产91精品高潮白浆喷水| 中文在线免费二区三区| 久久99亚洲热视| 啦啦啦中文在线观看日本| 中文字幕亚洲欧美日韩高清| 无码精品人妻一区二区| 亚洲女人天堂av| 日本成人在线播放| 欧美精品国产精品日韩精品| 免费**毛片在线| 久久久久久国产精品久久| 一个人www视频在线免费观看| 国产精品免费网站| 波多野结衣亚洲| 国产精品专区一| 天堂久久av| 蜜桃91精品入口| 精品国产一区二区三区成人影院 | 一区二区三区四区不卡在线| 亚洲色图 激情小说| 亚洲天堂2016| 日本裸体美女视频| 亚洲国产日韩av| 欧美日韩三级在线观看| 高跟丝袜欧美一区| 国产特黄大片aaaa毛片| 欧美午夜精品久久久久久孕妇| 国产三级三级在线观看| 精品视频—区二区三区免费| 日本最黄一级片免费在线| 亚洲人免费视频| 国产视频在线播放| 国产成人一区二区三区电影| 在线观看视频一区二区三区| 日本免费高清不卡| 一区二区亚洲精品| 无码粉嫩虎白一线天在线观看 | 久久高清视频免费| 国产精品久久777777换脸| 亚洲精品一区二区三区福利| 成人动漫在线播放| 性欧美办公室18xxxxhd| 综合久久伊人| 91人人爽人人爽人人精88v| 欧美三级午夜理伦三级在线观看| 国产精品一区二区免费看| 成人在线视频中文字幕| 国产精品久久久久免费| 成人亚洲一区二区| 国产一区二区网| 国产精品一区二区在线播放| 国产精品无码无卡无需播放器| 午夜精品爽啪视频| 草草视频在线播放| 久久久精品国产一区二区| **在线精品| 久久久久网址| 日韩五码在线| 性猛交╳xxx乱大交| 亚洲日本乱码在线观看| 一区二区视频在线免费观看| 欧美日韩成人激情| 国产哺乳奶水91在线播放| 在线看日韩欧美| 男人皇宫亚洲男人2020| 久久99久久99精品蜜柚传媒| 欧美freesex交免费视频| 欧美成人乱码一二三四区免费| 狠狠色丁香久久婷婷综合丁香| 日韩中文字幕电影| 国产精品久久久久影院老司| 亚洲天堂一区在线| 欧美精品一区二| 黄页网站在线| 国产精华一区二区三区| 亚洲国产日韩欧美在线| √天堂资源在线| 亚洲三级免费观看| 国产毛片久久久久| 美女精品久久久| 久久久国产精品入口麻豆| 精品欧美一区二区久久久伦 | 99久久精品免费看| 日韩精品国产一区二区| 亚洲国产精品yw在线观看 | 无码日韩精品一区二区| 欧美老年两性高潮| 天天操天天爱天天干| 久久久中文字幕| 亚洲成在人线免费观看| 北条麻妃在线一区| 国产99一区视频免费| 中文字幕人妻一区二区| 色综合视频在线观看| 久久av少妇| 国产美女扒开尿口久久久| 久久精品亚洲人成影院| 国产成人精品综合久久久久99| 久久久久成人黄色影片| 中文字幕xxxx| www国产亚洲精品久久网站| 国产日韩欧美中文在线| 国产91视频一区| 91在线观看地址| www.亚洲激情| 美女av一区二区三区| 韩国精品福利一区二区三区| 中文字幕一区二区三区四区五区人 | 福利视频一二区| 久久亚洲一区二区三区明星换脸 | 首页亚洲欧美制服丝腿| 国产真人真事毛片视频| 午夜精品福利视频网站| 视频三区在线观看| 久久久久中文字幕2018| 亚洲国产欧美日韩在线观看第一区 | 91久久人澡人人添人人爽欧美| 在线国产情侣| 国产亚洲欧美另类一区二区三区| 久久尤物视频| 国产精品白嫩白嫩大学美女| 精品偷拍一区二区三区在线看| 欧美一区二区三区婷婷| 欧美精品一区二区三区三州| 国产女同性恋一区二区| 亚洲精品无amm毛片| 久久av在线看| 亚洲毛片免费看| 手机av在线免费| 欧美午夜精品久久久久久久| www在线视频|