new Dog()
这句话是把一只狗放在堆内存的,是狗这个对象
注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。
Dog d = new Dog();
这句话把狗赋给 d 。d是放在栈内存的。d是狗的实例
如果new Dog()没有实例的话,java回收机制会将狗这个对象回收
构造方法顾名思义,就是构造对象的方法;要新建一个对象,可以用new ClassName();
new ClassName();到底都干了哪些事?
上面你提到——构造方法作用就是对类进行初始化,这句话我们拆开来理解:首先对类的static资源(包括static成员变量,static块)进行初始化,其次再对非static变量、块初始化,最后再执行构造方法内的代码
下面举例说明
public class T {
public static int k ;
public static int i = 5;
public int n = 6;
{
System.out.println("构造块");
}
static {
System.out.println("静态块");
}
public T() {
k=10;
i=50;
this.n=60;
}
public static void main(String[] args){
System.out.println("k="+k+" i="+i);
// System.out.println("n="+t.n);
T t = new T();
System.out.println("k="+k+"i="+i);
System.out.println("n="+t.n);
}
}
自己运行观察结果,注释掉的部分去掉注释后会报错,当执行main方法时,类的static资源已经初始了,具体我也不清楚为什么,好吧就这样了,祝你学习进步