Java中String類通過new創建和直接賦值字符串的區別


方式一:String a = “aaa” ;

方式二:String b = new String(“aaa”);

  • 兩種方式都能創建字符串對象,但方式一要比方式二更優
  • 因為字符串是保存在常量池中的,而通過new創建的對象會存放在堆內存中。

常量池中已經有字符串常量”aaa”

  • 通過方式一創建對象,程序運行時會在常量池中查找”aaa”字符串,將找到的”aaa”字符串的地址賦給a。
  • 通過方式二創建對象,無論常量池中有沒有”aaa”字符串,程序都會在堆內存中開辟一片新空間存放新對象。

常量池中沒有字符串常量”aaa”

  • 通過方式一創建對象,程序運行時會將”aaa”字符串放進常量池,再將其地址賦給a。
  • 通過方式二創建對象,程序會在堆內存中開辟一片新空間存放新對象,同時會將”aaa”字符串放入常量池,相當於創建了兩個對象。


免責聲明!

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



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