public class Do {
static String s="Instance";
public static void method(String s){
s="Add";
}
public static void main(String[] args) {
Do d=new Do();
s="new Instance";
String s="Local";
method(s);
System.out.println(s);
System.out.println(d.s);
}
}
输出为:
Local
new Instance
这里我做了一个静态全局变量为"Instance",之后我再次在主方法中用"New Instance"初始化它。
我的问题是在哪个内存区域"实例","新实例"one_answers"本地"将去和如何?
由于您声明了一个String变量而没有使用新关键字,因此它们将在String Constant Pool中占有一席之地。我看不出这段代码有任何混乱。如果像
这样声明变量String s = new String("local");
那么这将被创建在堆和字符串常量池。但是了解字符串池变化的主要一点是,从java 1.7开始,字符串池已经转移到堆中,您不再受固定大小的permgen空间的限制。