String值的调用(字节码层面)

    xiaoxiao2025-08-31  55

    先看下简单的调用 图中的代码:

    package test; public class Main { String a ="asd"; public void test(){ int a = 4; } public static void main(String[] args) { String b ="asd"; } }

    进行javap -v 进行反编译后产生的效果为 在图中的Constant pool中的#12 #13我们可以看出jvm将String值存储在常量池中,并且我们可以发现在下面的public static void main(java.lang.String[]) 这个方法中的反编译为ldc #12(把常量池中的项压入栈) 将常量池中的String值取出来并赋值给变量b

    下面看String 对象中的值调用

    同样运行javap -v 我们可以发现 常量池中的代码没有变

    在main主方法中的反编译为调用new String(String str)方法并且将str指向常量池中的#12中的值

    转载请注明原文地址: https://ju.6miu.com/read-1302161.html
    最新回复(0)