Object obj = new Object();
new 的过程到底做了什么?
首先jvm会进行载入,连接,初始化。在初始化前,类的信息已经放在了方法区中并且static部分已经放入。
在new的时候,才把obj放到堆中。并且这个时候,初始化属性,初始化方法。
For example:
class A {
public int i = method();
public static int j = method2();
public A() {
System.out.println(1);
}
private int method() {
System.out.println(2);
return 0;
}
private static int method2() {
System.out.println(3);
return 0;
}
}
public class B extends A {
public int m = method3();
public static int n = method4();
public B() {
System.out.println(4);
}
private static int method4() {
System.out.println(6);
return 0;
}
private int method3() {
System.out.println(5);
return 0;
}
public static void main(String[] arg) {
System.out.println(7);
A a = new B();
}
}
有A a = new B();结果是:3,6,7,2,1,5,4;
没有A a = new B();结果是:3,6,7