测试demo:
public class Test {
private final static String constant = "CESHI";
//类调用静态常量
public static void test() {
System.out.println(constant);
}
//对象调用静态常量
public void test1() {
System.out.println(this.constant);
}
public static void main(String[] args) {
test();
new Test().test1();
}
}
看下编译后的相应字节码:
test()方法相应的字节码如下:
test1()方法相应的字节码如下:
会发现对象调用静态常量的字节码比类调用静态常量多出了2行,这2行的大致作用就是做个局部变量的入栈和出栈操作。