欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀Java中打印輸出對象內(nèi)容為什么可以不寫.toString()

 更新時間:2023年09月29日 08:10:14   作者:lijin8080  
這篇文章主要介紹了解讀Java中打印輸出對象內(nèi)容為什么可以不寫.toString()問題,具有很的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題拋出

在 Java 中,我們經(jīng)常用到 System.out.println(); 輸出語句輸出內(nèi)容,有時候也會用于 打印對象 比如 System.out.println(Object);

當我們使用 System.out.println(Object); 打印對象時一般有兩種情況產(chǎn)生

  • 沒有重寫 toString() 方法時,輸出對象的 哈希碼(HashCode)
  • 若重寫了 toString() 方法,按重寫的格式輸出

可以得出,不管是什么情況,輸出的都是 toString();

方法里返回的內(nèi)容,但我們發(fā)現(xiàn), System.out.println(Object);

語句中并沒有去調用 toString(); 方法

也就是說 toString(); 被隱式調用了,其實我們在寫程序時也可以發(fā)現(xiàn),

圖中 第 7 行 的 toString 是灰色的,也就是說這里去調用 toString 是多余的

看源碼,找出打印對象時,toString 隱式調用原因

1.System.out.println(Object); 可以不寫 .toString() ,但打印的仍然是 toString() 中的內(nèi)容

2.說明 傳入一個對象 “Object”System.out.println() 方法,在 System.out.println() 方法的內(nèi)部,一定對 “Object” 做了一些操作

Ctrl + 點擊 println 查看源碼:

println() 方法中 我們發(fā)現(xiàn)這是一個打印流(PrintStream),然后對象在剛進入 println() 方法后,首先通過 String.valueOf(); 被轉成字符串 “s” 了,

然后最終打印輸出的 是這個字符串 “s”

然后我們 Ctrl + 點擊 valueOf() ; 查看 “s” 是個啥

看到這了,顯然,真相已經(jīng)浮出水面了。

當你傳入的對象 “obj” 不為空 null,返回 該對象的 toString() 的值

所以說,這就是我們在使用 System.out.println(Object); 打印對象時,可以不寫 .toString() 的原因

總結

寫到這,也就結束了,感興趣的還可以多點點其他方法的源碼,會有不一樣的收獲

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • windows下zookeeper配置java環(huán)境變量的方法

    windows下zookeeper配置java環(huán)境變量的方法

    今天小編就為大家分享一篇關于windows下zookeeper配置java環(huán)境變量的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • java操作solr實現(xiàn)查詢功能的實例

    java操作solr實現(xiàn)查詢功能的實例

    下面小編就為大家分享一篇java操作solr實現(xiàn)查詢功能的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • Netty搭建WebSocket服務器實戰(zhàn)教程

    Netty搭建WebSocket服務器實戰(zhàn)教程

    這篇文章主要介紹了Netty搭建WebSocket服務器實戰(zhàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • 讓你五分鐘徹底理解Spring MVC

    讓你五分鐘徹底理解Spring MVC

    其實MVC就是處理Web請求的一種框架模式,如果你對MVC不太熟悉的話可以看下本文,這篇文章主要給大家介紹了關于如何讓你五分鐘徹底理解Spring MVC的相關資料,需要的朋友可以參考下
    2021-10-10
  • java樹結構stream工具類的示例代碼詳解

    java樹結構stream工具類的示例代碼詳解

    Stream 作為 Java 8 的一大亮點,它與 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。今天通過本文重點給大家介紹java樹結構stream工具類的示例代碼,感興趣的朋友一起看看吧
    2022-03-03
  • SpringBoot中注解@AliasFor的使用詳解

    SpringBoot中注解@AliasFor的使用詳解

    這篇文章主要為大家詳細介紹了SpringBoot中注解@AliasFor的用法,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,需要的可以參考一下
    2022-05-05
  • SpringCloud集成Eureka并實現(xiàn)負載均衡的過程詳解

    SpringCloud集成Eureka并實現(xiàn)負載均衡的過程詳解

    這篇文章主要給大家詳細介紹了SpringCloud集成Eureka并實現(xiàn)負載均衡的過程,文章通過代碼示例和圖文講解的非常詳細,對大家的學習或工作有一定的參考價值,需要的朋友可以參考下
    2023-11-11
  • SpringBoot整合sharding-jdbc實現(xiàn)自定義分庫分表的實踐

    SpringBoot整合sharding-jdbc實現(xiàn)自定義分庫分表的實踐

    本文主要介紹了SpringBoot整合sharding-jdbc實現(xiàn)自定義分庫分表的實踐,將通過自定義算法來實現(xiàn)定制化的分庫分表來擴展相應業(yè)務,感興趣的可以了解一下
    2021-11-11
  • 深入解析Spring?AI框架如何在Java應用中實現(xiàn)智能化交互的關鍵

    深入解析Spring?AI框架如何在Java應用中實現(xiàn)智能化交互的關鍵

    本文詳細介紹了SpringAI框架在Java應用中的應用,包括實體類映射、函數(shù)回調等核心功能的實現(xiàn),通過源碼分析,幫助開發(fā)者更好地理解和使用這些高級特性,提升業(yè)務效率,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • SpringBoot3整合 Elasticsearch 8.x 使用Repository構建增刪改查示例應用

    SpringBoot3整合 Elasticsearch 8.x 使用Repository構

    我們構建了一個完整的 Spring Boot 3 和 Elasticsearch 8.x 的增刪改查示例應用,使用 Spring Data Elasticsearch Repository,我們能夠快速實現(xiàn)對 Elasticsearch 的基本 CRUD 操作,簡化了開發(fā)流程,希望這個示例能夠幫助你理解如何在項目中有效使用 Elasticsearch!
    2024-11-11

最新評論