關于String建立幾個對象的問題:
問題1:String Str = new String(“1對象1”);該過程建立了幾個對象
(以前看到過,面試的時候回答錯了…菜是原罪)
答案:一個或者兩個
原因:我們知道Java的字元常量緩沖池(字元串池,字元串常量池)
例如:
當JVM遇到上述代碼時,會先檢索常量池中是否存在“1對象1”,如果不存在“1對象1”這個字元串,則會先在常量池中建立這個一個字元串。然後再執行new操作,會在堆記憶體中建立一個存儲“1對象1”的String對象,對象的引用指派給str2。此過程建立了2個對象。
上圖中 堆内建立的對象指向了常量池中的對象。
通過debug我們可以看到如下圖所示的建立對象方式産生的對象。