在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關鍵字創建的字符串不存儲在字符串常量池中,而是直接在堆內存中。