最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java String的intern方法

 更新時間:2016年07月20日 10:48:15   投稿:lqh  
本文主要介紹java 中String 的intern方法,這里主要通過實例來說明不同版本的JDK,intern方法的對比,有需要的小伙伴可以參考下

首先我們應該清楚的是JDK1.6和JDK1.7中String類的intern方法還是有差別的: 

 JDK1.6中的intern:   

調用intern方法的時候首先會去常量池中查看是否存在與當前String值相同的值,如果存在的話,則直接返回常量池中這個String值的引用;如果不存在的話,則會將原先堆中的該字符串拷貝一份到常量池中。  

JDK1.7中的intern:   

調用intern方法的時候首先會去常量池中查看是否存在與當前String值相同的值,如果存在的話,則直接返回常量池中這個String值的引用;如果不存在的話,則只會將原先堆中該字符串的引用放置在常量池中,并不會將拷貝整個字符串到常量池中。   

這也就說明,JDK1.6和JDK1.7對于常量池中不存在此字符串的情況處理不同。    

下面通過實例來進行驗證和解釋:      

實例:

public static void main(String[] args) { 
  String str = "str"+new String("01");① 
  str.intern();② 
  String str1 = "str01";③ 
  System.out.println(str == str1); 
   
  String str2 = new String("str01");④ 
  str2.intern();⑤ 
  String str3 = "str01";⑥ 
  System.out.println(str2 == str3); 
   
  String str4 = "str01";⑦ 
  String str5 = new String("str")+new String("01");⑧ 
  str5.intern();⑨ 
  System.out.println(str4 == str5); 

在JDK1.6下輸出結果是:

false
false
false

解釋:

①執(zhí)行時會在堆內存創(chuàng)建一個值為"str01"的字符串對象str,同時在常量池創(chuàng)建一個"str"以及"01"常量;

②執(zhí)行時會首先去常量池中查看是否存在一個值為"str01"的常量,發(fā)現(xiàn)不存在,JDK1.6的做法就是將該字符串"str01"在常量池中也生成一份;

③執(zhí)行時會在常量池中創(chuàng)建一個"str01"對象,發(fā)現(xiàn)已經存在,因而不會新建;
第一個輸出false的原因是:str指向的是堆內存的"str01",而str1指向的是常量池中的"str01";

④執(zhí)行時會在堆內存創(chuàng)建一個值為"str01"的字符串對象str2,同時在常量池中創(chuàng)建一個值為"str01"的常量;

⑤執(zhí)行時會首先去常量池中查看是否存在值為"str01"的常量,發(fā)現(xiàn)存在,則直接返回這個常量引用;

⑥執(zhí)行時會在常量池中創(chuàng)建一個值為"str01"的常量,如果發(fā)現(xiàn)已經存在,則不會創(chuàng)建;

第二個輸出false的原因是:str2指向的是堆內存的"str01",而str3指向的是常量池中的"str01";

⑦執(zhí)行時會在常量池創(chuàng)建一個值為"str01"的常量;

⑧執(zhí)行時會在堆內存創(chuàng)建一個值為"str01"的字符串對象str5,同時在常量池創(chuàng)建一個"str"以及"01"常量;

⑨執(zhí)行時會去常量池查看是否存在值為"str01"的常量,發(fā)現(xiàn)存在則直接返回這個常量引用;
第三個輸出false的原因是:str5指向的是堆內存的"str01",而str4指向的是常量池中的"str01";

在JDK1.7下輸出結果是:

true
false
false

解釋:

發(fā)現(xiàn)只有第一個輸出結果不一樣,所以我們只解釋第一個的原因:

①執(zhí)行時會在堆內存創(chuàng)建一個值為"str01"的字符串對象str,同時在常量池創(chuàng)建一個"str"以及"01"常量;(這點和JDK1.6沒什么區(qū)別)

②執(zhí)行時會首先去常量池中查看是否存在一個值為"str01"的常量,發(fā)現(xiàn)不存在,JDK1.7的做法就是將堆內存中"str01"的引用復制到了常量池中;

③執(zhí)行時會在常量池中創(chuàng)建一個"str01"對象,發(fā)現(xiàn)已經存在,因而不會新建;
那么此時的str和str1都將指向的是堆內存中的"str01"的值,所以兩者相等;

以上就是對JDK1.6和JDK1.7中String類的intern方法的對比,是有差別的,有需要的朋友可以參考下。

相關文章

  • Java實現(xiàn)Word轉PDF的全過程

    Java實現(xiàn)Word轉PDF的全過程

    在IT領域,文檔格式轉換是常見的任務之一,特別是在管理大量文本數據時,本文將詳細探討如何利用Java技術將Word文檔(.docx)轉換成PDF格式,需要的朋友可以參考下
    2025-04-04
  • 詳解Java目錄操作與文件操作教程

    詳解Java目錄操作與文件操作教程

    本章具體介紹了目錄操作、文件操作的基本使用方法和常用函數,圖解穿插代碼實現(xiàn),感興趣的朋友來看看吧
    2022-03-03
  • 淺析final,finally,finalize 的區(qū)別

    淺析final,finally,finalize 的區(qū)別

    以下是對final,finally,finalize的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • java this的應用方法解析

    java this的應用方法解析

    這篇文章主要介紹了java this的應用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • java實現(xiàn)Dijkstra算法

    java實現(xiàn)Dijkstra算法

    這篇文章主要為大家詳細介紹了java實現(xiàn)Dijkstra算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java開發(fā)實現(xiàn)人機猜拳游戲

    Java開發(fā)實現(xiàn)人機猜拳游戲

    這篇文章主要為大家詳細介紹了Java開發(fā)實現(xiàn)人機猜拳游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Mybatis-plus如何開啟二級緩存

    Mybatis-plus如何開啟二級緩存

    這篇文章主要介紹了Mybatis-plus如何開啟二級緩存問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java后端限制頻繁請求和重復提交的實現(xiàn)

    Java后端限制頻繁請求和重復提交的實現(xiàn)

    很多用戶會請求過于頻繁或者是多次重復提交數據,本文主要介紹了Java后端限制頻繁請求和重復提交的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java深入探究Object類的方法

    Java深入探究Object類的方法

    java繼承中說到的Object類是java中一個特殊的類,所有的類都是直接或者間接的繼承自Object類,即如果某個類沒有使用extends關鍵字則默認是java.lang.Object類的子類,所以所有的類都可以使用Object類中定義的方法,下面介紹Object類的常用方法
    2022-05-05
  • MyBatis-Flex實現(xiàn)多表聯(lián)查(自動映射)

    MyBatis-Flex實現(xiàn)多表聯(lián)查(自動映射)

    我們可以輕松的使用 Mybaits-Flex 鏈接任何數據庫,本文主要介紹了MyBatis-Flex實現(xiàn)多表聯(lián)查(自動映射),具有一定的參考價值,感興趣的可以了解一下
    2024-06-06

最新評論

莎车县| 贡嘎县| 厦门市| 望谟县| 麻江县| 娄底市| 化隆| 马山县| 巴林右旗| 桐乡市| 文登市| 册亨县| 铜川市| 安塞县| 寻乌县| 宜都市| 舞阳县| 丹阳市| 广灵县| 永宁县| 镇康县| 手机| 宽城| 隆子县| 鹤山市| 栖霞市| 清水县| 渝中区| 桦甸市| 仁怀市| 塔河县| 咸宁市| 沙湾县| 合肥市| 安龙县| 丹东市| 威海市| 金堂县| 确山县| 巩留县| 阿瓦提县|