国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

string常量池是在方法區(qū)中嗎 字符串常量池是在方法區(qū)中還是在獨(dú)立的區(qū)域中?

字符串常量池是在方法區(qū)中還是在獨(dú)立的區(qū)域中?String STR=“nihao”當(dāng)程序開(kāi)始執(zhí)行此代碼時(shí),它必須創(chuàng)建一個(gè)對(duì)象,但是在創(chuàng)建對(duì)象之后,它是一個(gè)常量,不能更改,并且對(duì)象被放置在字符串池中,這就

字符串常量池是在方法區(qū)中還是在獨(dú)立的區(qū)域中?

String STR=“nihao”當(dāng)程序開(kāi)始執(zhí)行此代碼時(shí),它必須創(chuàng)建一個(gè)對(duì)象,但是在創(chuàng)建對(duì)象之后,它是一個(gè)常量,不能更改,并且對(duì)象被放置在字符串池中,這就是你說(shuō)的常量池

如果我以后再寫(xiě)代碼:String other=“nihao”

STR和other的地址是一樣的,因?yàn)镾TR和other的聲明方式是一樣的。創(chuàng)建str對(duì)象時(shí),如果字符串池中沒(méi)有“nihao”常量,請(qǐng)創(chuàng)建一個(gè)。在創(chuàng)建另一個(gè)對(duì)象時(shí),如果發(fā)現(xiàn)字符串池中有“nihao”常量,就直接使用它

string B1=New string(“nihao”)

但是如果用上述方法直接New string(),則A1和B1引用的對(duì)象不在字符串池中,而是在堆中。但是,new string()的參數(shù)“nihao”也是一個(gè)字符串。這根繩子是從哪里來(lái)的?如果我們拆分代碼,我們會(huì)理解它:

string A1=new string(para)

會(huì)發(fā)現(xiàn)代碼字符串A1=new string(“nihao”)實(shí)際上創(chuàng)建了兩個(gè)對(duì)象,一個(gè)是存儲(chǔ)在堆中的string對(duì)象,一個(gè)是string常量對(duì)象,它存儲(chǔ)在字符串池中

如果您查看字符串源代碼,您可以看到它是一個(gè)對(duì)象

!s=“123”

寫(xiě)這句話時(shí),您將首先找出常量池中是否有字符串對(duì)象123。如果沒(méi)有,他將開(kāi)始提取,1,2,3

然后將其拼接成一個(gè)對(duì)象,即“123”

如果有另一個(gè)對(duì)象需要這個(gè)對(duì)象,例如S1=“123”

此時(shí),在操作S1時(shí),最好去常量池看看是否有這個(gè)對(duì)象。如果有,您可以直接獲取地址,因?yàn)槌A砍財(cái)?shù)據(jù)是共享的

如果此時(shí)S1=“1234”則常量池不可用,您將再次提取1、2、3、4,然后將其重新組合為新對(duì)象并放入常量池中

!字符串源代碼包含一個(gè)專用變量。字符類型數(shù)組用于提取這些單個(gè)字符,然后將它們拼接到字符串對(duì)象中

字符串常量池到底存放的是字符串引用還是字符串對(duì)象?

它可以理解為內(nèi)存中字符串類型變量的一個(gè)特殊區(qū)域,例如字符串a(chǎn)=“ABC”當(dāng)您定義這樣一個(gè)變量時(shí),Java將首先轉(zhuǎn)到常量池以查找是否存在類似“ABC”的字符串。如果有,它會(huì)直接把內(nèi)存地址給a,否則它會(huì)生成一個(gè)字符串“ABC”,下一個(gè)字符串B=當(dāng)使用“ABC”時(shí),發(fā)現(xiàn)常量池中已經(jīng)有“ABC”。這時(shí),JVM不會(huì)再生成“ABC”,而是直接把它交給“ABC”來(lái)引用B,這樣您就會(huì)發(fā)現(xiàn)a==B