導航:首頁 > 編程語言 > java中的常量池

java中的常量池

發布時間:2024-09-01 00:21:51

㈠ 我想問一下java通過new String創建字元串會被保存都常量池中嗎

厚顏無恥的復制下

方式一:String a = 「aaa」 ;

方式二:String b = new String(「aaa」);

㈡ Java中的常量該放在哪

Java中的常量只能定義在類之中
常量定義格式:public|private static final 數據類型 常量名稱 = 值 (開發中88%通用)

㈢ java中基本數據類型int a =10,a在棧中存著,10是在常量池中存著嗎

int a =10 如果是這個 那麼10在棧裡面
Interger a = 10 那麼這個在常量池裡面
a是在-128到127之間,不會去堆中創建對象,而回是直接返回IntegerCache中的值;如果值不答在上面范圍內則會從堆中創建對象。= 走的是valueOf()方法,valueOf(int)會走緩存。
Interger a = new Interger(10) 這個在堆裡面

㈣ Java常量池是什麼有什麼用 和堆、棧有關系求簡單易懂的解釋!

1.寄存器:最快的存儲區, 由編譯器根據需求進行分配,我們在程序中無法控制.
2. 棧:存放基本類型的變數數據和對象的引用,但對象本身不存放在棧中,而是存放在堆(new 出來的對象)或者常量池中(字元串常量對象存放在常量池中。)
3. 堆:存放所有new出來的對象。
4. 靜態域:存放靜態成員(static定義的)
5. 常量池:存放字元串常量和基本類型常量(public static final)。
6. 非RAM存儲:硬碟等永久存儲空間
這里我們主要關心棧,堆和常量池,對於棧和常量池中的對象可以共享,對於堆中的對象不可以共享。棧中的數據大小和生命周期是可以確定的,當沒有引用指向數據時,這個數據就會消失。堆中的對象的由垃圾回收器負責回收,因此大小和生命周期不需要確定,具有很大的靈活性。
對於字元串:其對象的引用都是存儲在棧中的,如果是編譯期已經創建好(直接用雙引號定義的)的就存儲在常量池中,如果是運行期(new出來的)才能確定的就存儲在堆中。對於equals相等的字元串,在常量池中永遠只有一份,在堆中有多份。

㈤ java程序運行的五個步驟

1、Java程序從源文件創建到程序運行要經過兩大步驟:1、源文件由編譯器編譯成位元組碼(ByteCode) 2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言("semi-interpreted" language)。

第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點像make。如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。

編譯後的位元組碼文件格式主要分為兩部分:常量池和方法位元組碼。常量池記錄的是代碼出現過的所有token(類名,成員變數名等等)以及符號引用(方法引用,成員變數引用等等);方法位元組碼放的是類中各個方法的位元組碼。

第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。

2、下面是程序運行的詳細步驟:

㈥ 什麼是JVM 運行時常量池

運行時常量池 vs 常量池

​ 要弄清楚方法區,需要理解清楚ClassFile,因為載入內的信息都在方法區。

​ 要弄清楚方法區的運行時常量池,需要理解清楚ClassFile中的常量池。

​ 一個Java源文件中的類、介面,編譯後產生一個位元組碼文件。而Java中的位元組碼需要數據支持,通常這種數據會很大以至於不能直接存在位元組碼文件,換另一種方式,可以存在常量池,這個位元組碼包含了指向常量池的引用。在動態鏈接的時候會用到運行時常量池。

棧幀

[圖片上傳失敗...(image-b8ec8b-1600702650468)]

動態鏈接

Javad 方法區究竟存了什麼???

㈦ java中常量存放在哪

首先我認為只有作為類屬性,加上了static final的,才被稱為常量。
可以在三個地方的屬性前添加final:
1.作為類屬性,加static (通常意義上指的就是這種。在編程規范中要求這種屬性名稱必須全大寫。)
2.作為對象屬性,不加static
3.在方法體,或簽名上聲明。
第一種,static的,作為類信息在類被載入時被存在靜態的方法區。
第二種,非static的,作為對象屬性,在對象創建的時候被初始化,存在堆里。
第三種,在方法里的。我們知道在方法被調用時會被載入到棧中進行執行,所以寫在方法里的變數存在棧中。

閱讀全文

與java中的常量池相關的資料

熱點內容
微軟平板開機密碼設置 瀏覽:978
linux刪除一行的快捷鍵 瀏覽:269
win10改hosts文件 瀏覽:354
數據博世怎麼樣 瀏覽:411
用tar解包沒有那個文件或目錄 瀏覽:307
錄歌教程 瀏覽:604
java小數進制轉換 瀏覽:270
80後qq頭像女生 瀏覽:388
word2013頁面顏色 瀏覽:661
linux系統安裝顯卡驅動 瀏覽:243
手機安卓培訓機構 瀏覽:819
英語版本的哈面寶寶 瀏覽:567
手機動態壁紙教學視頻教程 瀏覽:543
網路攝像機sip 瀏覽:757
湘潭編程學校哪裡好 瀏覽:389
win10設置桌面小圖標怎麼去掉嗎 瀏覽:122
網路安全創業 瀏覽:787
修改linux 瀏覽:464
如何編程計算機cpu高佔用程序 瀏覽:808
程序員活動策劃方案 瀏覽:130

友情鏈接