最近看了一下java虚拟机,有些地方不太懂,请教一下
public class AS {
String a="a";
String b="b";
String c;
public AS(){}
public void SetC(String c){
this.c=c;
}
}
1.变量a和b的值是在AS.class被加载的时候存放到了constant_string_info表里了吗?
2.比如在main方法里new了一个AS as=new AS(); String e="qwe"; as.setC(e);
方法区里面是每一个类都有一个常量池吗,每个常量池都有一个constant_string_info表?如果是的话,那么e="qwe"是在哪个常量池检索是否存在“qwe”,是main所在类的常量池吗?
new AS后产生了一个AS对象实例放在了堆中。那么堆中的对象实例都包括哪些内容,是仅仅包括实例的描述,还是包括实例的特有的数据(如果包括,那是值,还是值的引用)?具体的,例如as中c,其值为“qwe”,那么在这个heap中的实例数据包括这个c的值吗,还是指向某个常量池中“qwe”的引用?