类调用静态常量和对象调用静态常量有什么不同

测试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行的大致作用就是做个局部变量的入栈和出栈操作。

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/108453542