首頁  >  文章  >  Java  >  java的String類別中兩種物件實例化的區別

java的String類別中兩種物件實例化的區別

王林
王林轉載
2019-11-25 17:13:342224瀏覽

java的String類別中兩種物件實例化的區別

區別:

直接賦值:只會開闢一塊堆記憶體空間,並且該字串物件可以自動保存在物件池中以供下次使用。

建構方法:會開啟兩塊堆記憶體空間,其中一塊成為垃圾空間,不會自動儲存在物件池中,可以使用intern()方法手動入池。

java相關影片教學推薦:java影片教學

直接賦值:

java的String類別中兩種物件實例化的區別

##常數最佳化機制:

String類別的設計使用了共享設計模式。

在JVM底層實際上會自動維護一個物件池(字串物件池),如果現在採用了直接賦值的模式進行String類別的物件實例化操作,那麼該實例化物件(字串內容)將自動儲存到這個物件池之中。

如果下次繼續使用直接賦值的模式宣告String類別對象,此時物件池之中如若有指定內容,將直接進行引用;

如若沒有,則開闢新的字串物件而後將其保存在物件池之中以供下次使用所謂的物件池就是一個物件陣列(目的就是減少開銷)

建構方法賦值:

類別物件使用建構方法實例化是標準做法。

String str = new String("hello");

透過分析可知,如果使用String建構方法就會開啟兩塊堆記憶體空間,而其中一塊堆記憶體將成為垃圾空間。除了這個缺點之外,也會對字串共享產生問題。

因此,一般會採取直接賦值的方式。 相關文章教學推薦:

java入門#######

以上是java的String類別中兩種物件實例化的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除