String str = "i" 與 String str = new String("i")一樣嗎?


Java基礎

String str = "i" 與 String str = new String("i")一樣嗎?

不一樣,因為內存的分配方式不一樣。String str = "i"的方式,Java虛擬機會將其分配到常量池中;而String str = new String("i")則會被分到堆內存中。

代碼示例:

String x = "葉痕秋";
String y = "葉痕秋";
String z = new String("葉痕秋");
System.out.println(x == y); // true
System.out.println(x == z); // false

String x = "葉痕秋" 的方式,Java 虛擬機會將其分配到常量池中,而常量池中沒有重復的元素,比如當執行“葉痕秋”時,java虛擬機會先在常量池中檢索是否已經有“葉痕秋”,如果有那么就將“葉痕秋”的地址賦給變量,如果沒有就創建一個,然后在賦給變量;而 String z = new String(“葉痕秋”) 則會被分到堆內存中,即使內容一樣還是會創建新的對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM