如果String str = “abc”;
String str1 = new String(“abc”);
這樣,“abc”是會被放在常量池裡的吧,那麼
new String的時候會不會從直接常量池裡找abc,而不用再創建啊??還是說可以在常量池裡找到就不用再創建了?
String str = “abc”;這段代碼創建的對象str是指向常量池中“abc"的地址的。
String str1 = new String(“abc”);而這段代碼創建了一個對象,該對象的值為"abc",同時str1是指向堆中這個對象。
Java中直接的常量串,例如“abc”是會被放在常量池裡的,而對字符串的new操作則是創建字符串對象,它是創建了一個對象該對象的值是某個串”abc",
補充下Java的String的intern是你說的這個意思,如String str3=str1.intern()。會在創建完對象後並將這個對象的值放入常量池中的。