在Java虚拟机(JVM)中,getstatic
是一个字节码指令,用于从类的静态字段(Static Field)获取值,并将这个值压入当前方法的操作数栈顶。这个操作仅适用于类级别的静态变量,而非实例变量。
例如,假设我们有以下Java代码:
Java
1public class MyClass {
2 public static int STATIC_FIELD = 42;
3
4 public void displayStaticField() {
5 System.out.println(STATIC_FIELD);
6 }
7}
编译后的 displayStaticField
方法的部分字节码可能如下所示:
Assembly
1...
2// getstatic指令从MyClass的静态字段获取值
31: getstatic #2 // Field MyClass.STATIC_FIELD:I
44: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
5...
在这个例子中,getstatic
指令作用于常量池中的索引 #2,该索引指向了 MyClass.STATIC_FIELD
这个静态字段。执行这条指令时,JVM会从 MyClass
类的内存区域中加载静态字段 STATIC_FIELD
的值(即42),并将这个整数值压入当前线程的操作数栈。随后,调用 println
方法打印出这个值。