Java中的String和String pool

在java中有兩種方式創建字符串
1.字面量方式創建字符串
  String name = "tom";

2.new關鍵字創建字符串
  String name2 = new String("jerry");

------------------------------------
Java中的String pool(字符串常量池)
String pool是java堆內存(heap memory)中的存儲字符串的一塊區域。

A:

當使用字面量的方式創建字符串時,虛擬機會檢查字符串池中的字符串,如果有相同的字符串,那麼並不會爲新的字符串分配內存空間,而是令它指向字符串常量池中已經存在的那個字符串。這樣做的好處是節省了內存的消耗。

注意使用字面量的方式創建的字符串是存儲在字符串常量池中的。

如:
        String name = "tom";
        String name2 = "tom";

這裏寫圖片描述

當使用new關鍵字時,

        String name3 = new String("tom");
        String name4 = new String("tom); 

就在java堆內存中創建了一個新的字符串,而不管在字符串池中是否已經存在。
使用new關鍵字方法每一次都會在堆內存中創建新的字符串。這個字符串對象會一直待在java堆內存中直到被垃圾收集器收集,顯然這會影響性能。

注意使用new關鍵字創建的字符串不存儲在字符串常量池中,而是直接在堆內存中。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章