亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文搞懂String的intern()方法

 更新時間:2023年06月02日 10:16:57   作者:一一哥Sun  
這篇文章主要給大家介紹String的intern()方法,文中有詳細的代碼示例,感興趣的小伙伴讓我們一起來看看這究竟是個什么玩意

一. 先來一段代碼

我們先上一段代碼:

String str1 = new StringBuilder("你好").append("renr").toString();
String str2 = "你好renr";
System.out.println(str3 == str4);

大家猜猜上面代碼的輸出結果是什么?true還是false?

321,你猜對了嗎?

這里的輸出結果是:false!

二. String的intern()方法詳解

上面的結果是為什么呢?為了搞清楚這個問題,我們看看需要了解一下intern()方法的內部原理。其實大家可以將String的intern()方法 , 理解為 個可以 手動將字符串加入常量池中的方法。

在上述代碼中,我們知道 "=="比較的是對象的地址, 輸出 結果為 false, 這就 說明str1和str2的地址不同。而str 2 引用的字符串"你好renr"肯定是放在常量池中的,這就說明str1引用的字符串不在常量池中,而是在堆中。 對于上述現象,我們可以按照下圖所示進行理解:

三. 修改代碼后再看結果

我們可以對上述代碼進行修改,接著再來看一下執(zhí)行結果,代碼如下:

String str3 = new StringBuilder("你好").append("renr").toString();
System.out.println(str3.intern() == str3);
String str4 = "你好renr";
System.out.println(str3 == str4);

現在你再來猜一下上面代碼的輸出結果,會分別輸出什么?

321,我們來公布結果,這次輸出的結果為:

true true

來來來,再來給你解釋一下:

執(zhí)行str3.intern()后,str3==str4返回true,這就說明str3和str4引用了同一對象 地址 。

上面我們提到,new StringBuilder("你好").append("renr").toString()得到的字符串存放在堆中,執(zhí)行str3.intern()后,會將str3的對象引用放入 常量池中 ( jdk1.7后 )

而對str4進行賦值時,發(fā)現常量池中已經有了該字符串的引用,則 將該引用值直接賦值給str4, 所以 str4也指向 str3的對象 ,故 最后輸出 結果為 true

四. 總結

通過對上面代碼的解釋,現在你搞懂了intern()方法的執(zhí)行原理了嗎?現在請你要記得,intern()的作用就是就是直接將字符串添加到常量池!好了,本篇到此為止。

以上就是一文搞懂String的intern()方法的詳細內容,更多關于String intern()方法的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解Spring Cloud Gateway 數據庫存儲路由信息的擴展方案

    詳解Spring Cloud Gateway 數據庫存儲路由信息的擴展方案

    這篇文章主要介紹了詳解Spring Cloud Gateway 數據庫存儲路由信息的擴展方案,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • seata springcloud整合教程與遇到的坑

    seata springcloud整合教程與遇到的坑

    seata 是alibaba 出的一款分布式事務管理器,他有侵入性小,實現簡單等特點。這篇文章主要介紹了seata springcloud整合教程與遇到的坑,需要的朋友可以參考下
    2021-07-07
  • Java中的多線程一定就快嗎?

    Java中的多線程一定就快嗎?

    這篇文章主要介紹了Java 多線程的相關資料,幫助大家是否選擇開啟多線程,感興趣的朋友可以了解下
    2020-09-09
  • Eclipse中安裝反編譯工具Fernflower的方法(Enhanced Class Decompiler)

    Eclipse中安裝反編譯工具Fernflower的方法(Enhanced Class Decompiler)

    這篇文章主要介紹了Eclipse中安裝反編譯工具Fernflower的方法(Enhanced Class Decompiler),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • JDBC以反射機制加載類注冊驅動連接MySQL

    JDBC以反射機制加載類注冊驅動連接MySQL

    這篇文章介紹了JDBC以反射機制加載類注冊驅動連接MySQL的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 使用Spring Boot快速構建基于SQLite數據源的應用

    使用Spring Boot快速構建基于SQLite數據源的應用

    為了提供一個單包易部署的服務器應用,考慮使用Spring Boot,因為其集成了Apache Tomcat,易于運行,免去絕大部分了服務器配置的步驟
    2017-08-08
  • Spring Boot整合RabbitMQ實例(Topic模式)

    Spring Boot整合RabbitMQ實例(Topic模式)

    Topic Exchange 轉發(fā)消息主要是根據通配符。接下來通過本文給大家分享Spring Boot整合RabbitMQ實例(Topic模式),需要的朋友參考下吧
    2017-04-04
  • 關于ConditionalOnMissingBean失效問題的追蹤

    關于ConditionalOnMissingBean失效問題的追蹤

    這篇文章主要介紹了關于ConditionalOnMissingBean失效問題的追蹤方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • spring是如何實現聲明式事務的

    spring是如何實現聲明式事務的

    這篇文章主要介紹了spring是如何實現聲明式事務的,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Mybatis中的resultType和resultMap使用

    Mybatis中的resultType和resultMap使用

    這篇文章主要介紹了Mybatis中的resultType和resultMap使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09

最新評論