关于类的实例化的问题
我想问个问题
假如
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的实例。