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

關于Java中String創(chuàng)建的字符串對象內(nèi)存分配測試問題

 更新時間:2021年07月28日 11:25:12   作者:嘻嘻作者哈哈  
這篇文章主要介紹了Java中String創(chuàng)建的字符串對象內(nèi)存分配測試,給大家詳細介紹了在創(chuàng)建String對象的兩種常用方法比較,通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下

一、創(chuàng)建String對象的兩種常用方法比較

舉例說明

String str1 = "Java天下第一"; //方法1
String str2 = new String("Java天下第一"); //方法2
System.out.println(str1 == str2); //比較地址,false
System.out.println(str1 == str2.intern()); //true

區(qū)別

2.1 方法1中,首先會去JVM的常量池里查找是否有存儲"Java天下第一"的地址空間。如果有則直接讓變量str1指向該地址空間;如果沒有,則在常量池中分配一塊地址空間,并將"Java天下第一"寫入該空間,然后讓變量str2指向該地址空間。
2.2 方法2中,JVM首先會為str2變量分配一塊堆區(qū)空間,并讓str2指向該空間。其次str2指向的堆區(qū)空間會維護private final char[] value,即用value指向字符串常量數(shù)據(jù)"Java天下第一"。value也需要和str1一樣去查找常量池是否有"Java天下第一",步驟同str1一樣。

總結:上圖可以體現(xiàn)String創(chuàng)建的字符串,復用性高。

二、自定義的類,屬性含有String變量

public class StringBlog {
    public static void main(String[] args) {
        String str1 = "Java天下第一";
        ProLau pL1 = new ProLau(str1);
        ProLau pL2 = new ProLau(str1);

        System.out.println(pL1 == pL2); //false
        System.out.println(str1 == pL1.name); //true
        System.out.println(pL1.name == pL2.name); //true
    }
}

class ProLau{
    String name;

    public ProLau(String name) {
        this.name = name;
    }
}

分析:比較結果為true表示指向同一塊地址空間。

三、字符串相加比較

public static void addString(){
        String str1 = "hello";
        String str2 = str1 + "Java"; //底層會new一個新的String類的實例對象,讓str2指向該對象
        String str3 = "helloJava";
        String str4 = "hello" + "Java"; //底層優(yōu)化,直接拼接

        System.out.println(str2 == str3); //false
        System.out.println(str2 == str4); //false
        System.out.println(str3 == str4); //true
        System.out.println(str2.intern() == str3); //true
    }

到此這篇關于Java中String創(chuàng)建的字符串對象內(nèi)存分配測試的文章就介紹到這了,更多相關Java String字符串對象內(nèi)存分配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • intellij idea tomcat熱部署配置教程

    intellij idea tomcat熱部署配置教程

    這篇文章主要介紹了intellij idea tomcat熱部署配置教程圖解,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    這篇文章主要介紹了Thread中start()和run()的區(qū)別,Thread類包含start()和run()方法,它們的區(qū)別是什么?下面將對此作出解答
    2014-01-01
  • Spring?@Transactional事務失效的原因分析

    Spring?@Transactional事務失效的原因分析

    一個程序中不可能沒有事務,Spring中,事務的實現(xiàn)方式分為兩種:編程式事務和聲明式事務。日常項目中,我們都會使用聲明式事務?@Transactional來實現(xiàn)事務,本文來和大家聊聊什么情況會導致@Transactional事務失效
    2022-09-09
  • 解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題

    解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題

    這篇文章主要介紹了解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中的復合數(shù)據(jù)類型

    Java中的復合數(shù)據(jù)類型

    這篇文章主要介紹了Java中的復合數(shù)據(jù)類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring spel表達式使用方法示例

    Spring spel表達式使用方法示例

    這篇文章主要介紹了Spring spel表達式使用方法示例,通過一些實例向大家展示了spel表達式的用法,需要的朋友可以了解下。
    2017-09-09
  • 詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題

    詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題

    這篇文章主要介紹了詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題 ,非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • 實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之整合Swagger2到通用模塊

    實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之整合Swagger2到通用模塊

    這篇文章主要為大家介紹了實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之整合Swagger2到通用模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • SpringBoot實現(xiàn)熱部署Community的示例代碼

    SpringBoot實現(xiàn)熱部署Community的示例代碼

    本文主要介紹了SpringBoot實現(xiàn)熱部署Community的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • java對象持久化保存的方法詳解

    java對象持久化保存的方法詳解

    這篇文章主要介紹了java對象持久化保存的方法詳解,在java應用開發(fā)的過程中,經(jīng)常遇到需要持久保存java對象的情況,比如:用戶信息、博客評論內(nèi)容等等,本文針對java對象的持久化保存方法進行討論,簡述各個方法的優(yōu)劣,需要的朋友可以參考下
    2023-07-07

最新評論

庆云县| 开江县| 信丰县| 项城市| 焦作市| 宁津县| 荣成市| 大英县| 方正县| 大渡口区| 蒲江县| 洪洞县| 陆河县| 大洼县| 凌源市| 昌乐县| 扶沟县| 鸡东县| 涟源市| 宿松县| 台东县| 名山县| 松溪县| 屏山县| 平遥县| 衢州市| 防城港市| 安远县| 封开县| 聊城市| 鱼台县| 新和县| 临邑县| 胶南市| 龙陵县| 犍为县| 惠来县| 招远市| 库尔勒市| 山阴县| 孟村|