簡體   English   中英

Java虛擬機如何處理常量

[英]How does the Java Virtual Machine deal with constants

所以我編譯了這段代碼並將其反編譯成字節碼:

System.out.println("hi");

編譯為:

getstatic
ldc
invokevirtual

從我在這里看到的,文字值“hi”沒有以任何字節碼格式顯式存儲,因此.class文件還包含該程序的堆棧的隱藏表示。 例如,當我編譯該程序時,.class文件將包含該字節碼,以及包含文字值“hi”的堆數據結構。 更一般地說,.class文件包含的不僅僅是字節碼(例如堆,堆棧和寄存器的表示)。 謝謝!

常量存儲在類文件的單獨部分中,而不是字節碼,稱為常量池。 您可以在此處找到有關它們的更多信息: Java Constant Pool的用途是什么?

類文件格式在Java虛擬機規范中公開可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM