class Person
{
private String name="hello";
private int age;
static
{
System.out.println("a");
}
{
System.out.println("b");
}
Person(String name,int age)
{
this.name=name;
this.age=age;
show();
}
public void show()
{
System.out.println("name="+name+" "+"age="+age);
}
}
class Test
{
public static void main(String[] args)
{
Person p=new Person("java",25);
}
}
上面为一个基本的小程序,从上面的小程序我们可以大概知道主函数中Person p=new Person("java",25)代码在内存中加载流程。
1、new用到了Person.class,所以Person.class字节码先加载到内存中。
2、执行Static(静态)代码块,静态代码块随着类的加载而加载。
3、创建对象的成员变量,并对变量进行默认初始化(name=null,age=0),然后给变量进行赋值(name=hello,age=0);
4、执行构造代码块,构造代码块随着对象的创建而加载。
5、执行对象的构造函数。
6、将堆内存中的Person对象赋值给变量栈内存中的变量P。 |