您好,登錄后才能下訂單哦!
這期內容當中的小編將會給大家帶來有關java的String類中直接賦值和構造方法的區別,以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
區別:
直接賦值:只會開辟一塊堆內存空間,并且該字符串對象可以自動保存在對象池中以供下次使用。
構造方法:會開辟兩塊堆內存空間,其中一塊成為垃圾空間,不會自動保存在對象池中,可以使用intern()方法手工入池。
直接賦值:
常量優化機制:
String類的設計使用了共享設計模式。
在JVM底層實際上會自動維護一個對象池(字符串對象池),如果現在采用了直接賦值的模式進行String類的對象實例化操作,那么該實例化對象(字符串內容)將自動保存到這個對象池之中。
如果下次繼續使用直接賦值的模式聲明String類對象,此時對象池之中如若有指定內容,將直接進行引用;
如若沒有,則開辟新的字符串對象而后將其保存在對象池之中以供下次使用所謂的對象池就是一個對象數組(目的就是減少開銷)
構造方法賦值:
類對象使用構造方法實例化是標準做法。
String str = new String("hello");
通過分析可知,如果使用String構造方法就會開辟兩塊堆內存空間,并且其中一塊堆內存將成為垃圾空間。除了這一缺點之外,也會對字符串共享產生問題。
因此,一般會采取直接賦值的方式。
上述就是小編為大家分享的java的String類中直接賦值和構造方法的區別了,如果您也有類似的疑惑,不妨礙參照上述分析進行理解。如果想了解更多相關內容,請關注億速云行業資訊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。