這期內(nèi)容當(dāng)中的小編將會(huì)給大家?guī)碛嘘P(guān)java的String類中直接賦值和構(gòu)造方法的區(qū)別,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)是一家專業(yè)提供丹江口企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為丹江口眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
區(qū)別:
直接賦值:只會(huì)開辟一塊堆內(nèi)存空間,并且該字符串對(duì)象可以自動(dòng)保存在對(duì)象池中以供下次使用。
構(gòu)造方法:會(huì)開辟兩塊堆內(nèi)存空間,其中一塊成為垃圾空間,不會(huì)自動(dòng)保存在對(duì)象池中,可以使用intern()方法手工入池。
直接賦值:
常量優(yōu)化機(jī)制:
String類的設(shè)計(jì)使用了共享設(shè)計(jì)模式。
在JVM底層實(shí)際上會(huì)自動(dòng)維護(hù)一個(gè)對(duì)象池(字符串對(duì)象池),如果現(xiàn)在采用了直接賦值的模式進(jìn)行String類的對(duì)象實(shí)例化操作,那么該實(shí)例化對(duì)象(字符串內(nèi)容)將自動(dòng)保存到這個(gè)對(duì)象池之中。
如果下次繼續(xù)使用直接賦值的模式聲明String類對(duì)象,此時(shí)對(duì)象池之中如若有指定內(nèi)容,將直接進(jìn)行引用;
如若沒有,則開辟新的字符串對(duì)象而后將其保存在對(duì)象池之中以供下次使用所謂的對(duì)象池就是一個(gè)對(duì)象數(shù)組(目的就是減少開銷)
構(gòu)造方法賦值:
類對(duì)象使用構(gòu)造方法實(shí)例化是標(biāo)準(zhǔn)做法。
String str = new String("hello");
通過分析可知,如果使用String構(gòu)造方法就會(huì)開辟兩塊堆內(nèi)存空間,并且其中一塊堆內(nèi)存將成為垃圾空間。除了這一缺點(diǎn)之外,也會(huì)對(duì)字符串共享產(chǎn)生問題。
因此,一般會(huì)采取直接賦值的方式。
上述就是小編為大家分享的java的String類中直接賦值和構(gòu)造方法的區(qū)別了,如果您也有類似的疑惑,不妨礙參照上述分析進(jìn)行理解。如果想了解更多相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊。