[英]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.