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

jdk8字符串常量池在哪里 Java運(yùn)行時(shí)常量池是什么?

Java運(yùn)行時(shí)常量池是什么?在回答這個(gè)問(wèn)題之前,讓我們先談?wù)勈裁词浅A?。用final修改的成員變量稱為常量。一旦指定了常量的值,就不能更改!final修改了三種類型的變量:靜態(tài)變量、實(shí)例變量和局部變量

Java運(yùn)行時(shí)常量池是什么?

在回答這個(gè)問(wèn)題之前,讓我們先談?wù)勈裁词浅A俊?/p>

用final修改的成員變量稱為常量。一旦指定了常量的值,就不能更改

!final修改了三種類型的變量:靜態(tài)變量、實(shí)例變量和局部變量,它們代表三種類型的常量。

Java中的常量池可以分為兩種方式:靜態(tài)常量池和運(yùn)行時(shí)常量池。

1)所謂的靜態(tài)常量池是*中的常量池。類文件。類文件中的常量池不僅包含字符串(number)的文字量,還包含類和方法的信息,占用了類文件的大部分空間。

2)運(yùn)行時(shí)常量池是JVM虛擬機(jī)將類文件中的常量池加載到內(nèi)存中,并在完成類加載操作后將其保存在方法區(qū)域中。我們經(jīng)常在方法區(qū)域中將常量池稱為運(yùn)行時(shí)常量池。

只要我們?cè)贘ava中談?wù)摮氐母拍?,在大多?shù)情況下,它是為了減少頻繁的創(chuàng)建和破壞。使用一種方法來(lái)管理這個(gè)過(guò)程。讓我們簡(jiǎn)單地談?wù)勥@個(gè)問(wèn)題,以供具體參考。深入了解Java虛擬機(jī)書(shū)籍,了解更多。

小木的答案。根據(jù)自己的理解和別人的理解站在巨人的肩膀上,走得更遠(yuǎn)更快。

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

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

!s=“123”

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

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

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

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

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

字符常量池是什么意思?

可以理解為專門(mén)為內(nèi)存中的字符串類型變量打開(kāi)的區(qū)域。例如,string a=“ABC”定義這樣一個(gè)變量時(shí),Java會(huì)先到常量池中查找是否有像“ABC”這樣的字符串,如果有,直接把內(nèi)存地址給a,否則會(huì)生成一個(gè)字符串“ABC”。當(dāng)下一個(gè)字符串B=“ABC”時(shí),發(fā)現(xiàn)常量池已經(jīng)有了“ABC”。這時(shí)JVM不會(huì)再生成“ABC”,而是直接引用“ABC”來(lái)引用B,所以這時(shí)你會(huì)發(fā)現(xiàn)a==B

string STR=“nihao”程序開(kāi)始執(zhí)行這個(gè)代碼,它肯定會(huì)創(chuàng)建一個(gè)對(duì)象,只是對(duì)象創(chuàng)建后,它是一個(gè)常量,不能更改,對(duì)象被放在字符串池中,也就是你所說(shuō)的常量池

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

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

string B1=new string(“nihao”)

但是如果我們使用上述方法直接創(chuàng)建一個(gè)新字符串(),則A1和B1引用的對(duì)象不在字符串池中,而是在堆中。但是,new string()的參數(shù)“nihao”也是一個(gè)字符串。這根繩子是從哪里來(lái)的?如果我們拆分代碼,我們可以看到stringa1=newstring(para)]的代碼實(shí)際上創(chuàng)建了兩個(gè)對(duì)象,一個(gè)是存儲(chǔ)在堆中的string對(duì)象,另一個(gè)是存儲(chǔ)在字符串池中的stringconstant對(duì)象