class Demo
{
public static void main(String[] args)
{
String name; //这个 name 存在于栈内存中,需要初始化。
//System.out.println(name);//Demo.java:6: 错误: 可能尚未初始化变量name——为什么没有默认初始化null
Person p = new Person(); //对象实例化
System.out.println(p.name);//默认初始化值:null
}
}
class Person
{
String name;//这个 name 是 Person 类中的常量,创建 Person 类对象时,才有这个常量,存在于堆内存中。
}
或许你可以这样理解: main 中的成员变量存在于栈内存中,必须要执行的代码。
而其他类中的成员变量,需要随着它所在的类的被调用而加载的,相较于 main 中的成员,创建有前提条件,故而存在于堆内存中。 作者: 想飞的鱼 时间: 2014-9-11 19:06