日期:2014-05-17  浏览次数:20743 次

关于类的实例化的问题
我想问个问题
假如
class People
{
    …………………………;
}   
People p=new People();   说明是定义了个新的对象。

那么,我想问   People p; 说明啥?


是不是说,这时候p只是放在了栈上?
而没有放到堆上?
只有new出来以后,才会放到堆上去?
是这么理解的吗?

------解决方案--------------------
不管你new没有,p都是作为一个引用放在栈上的。
如果没有实例化,即没有new一个对象,那么p的值null.
如果new了一个对象,那么会在堆上为这个对象分配一段内存,然后p指向这段内存。
------解决方案--------------------
People p;
相当于
People p = null;
如果这一行写在方法内,那么p放在堆栈上,但是不引用任何内容。
People p = new People();
p也放在堆栈上,指向一个托管堆上的People的实例。