A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马