亚洲AV日韩AV无码,久碰人妻人妻人妻人妻人掠,无码中字出轨中文人妻中文中,国产精品无套内射迪丽热巴,久久大香萑太香蕉AV黄软件,日本欧美国产综合,人妻少妇AV无码一区二区,国产精品久久精品国产,亚欧免费无码aⅴ在线观看,黑人4o公分全部进入

Java字符串常量池是什么?為什么要有這種常量池?

時間:2020-12-10 15:36:21 類型:JAVA
字號:    

  ava中的字符串常量池(String Pool)是存儲在Java堆內(nèi)存中的字符串池。我們知道String是java中比較特殊的類,我們可以使用new運算符創(chuàng)建String對象,也可以用雙引號(”“)創(chuàng)建字串對象。

  Java中的字符串常量池

  下圖,清楚地解釋了如何在Java堆內(nèi)存中維護字符串常量池,以及當我們使用不同的方式創(chuàng)建字符串時在堆內(nèi)存中如何存放

2.png

  之所以有字符串常量池,是因為String在Java中是不可變(immutable)的,它是String interning概念的實現(xiàn)。字符串常量池也是亨元模式(Flyweight)的實例。

  字符串常量池有助于為Java運行時節(jié)省大量空間,雖然創(chuàng)建字符串時需要更多的時間。

  當我們使用雙引號創(chuàng)建一個字符串時,首先在字符串常量池中查找是否有相同值的字符串,如果發(fā)現(xiàn)則返回其引用,否則它會在池中創(chuàng)建一個新的字符串,然后返回新字符串的引用。

  如果使用new運算符創(chuàng)建字符串,則會強制String類在堆空間中創(chuàng)建一個新的String對象。我們可以使用intern()方法將其放入字符串常量池或從字符串常量池中查找具有相同的值字符串對象并返回其引用


<