先看下简单的调用
图中的代码:java
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值取出来并赋值给变量bweb
下面看String 对象中的值调用
jvm
一样运行javap -v 咱们能够发现
常量池中的代码没有变svg
在main主方法中的反编译为调用new String(String str)方法而且将str指向常量池中的#12中的值spa