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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lvfubin 中级黑马   /  2015-8-20 21:39  /  357 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  代码块份好几种,他们都有什么区别,什么时候用呢?求解。

2 个回复

倒序浏览
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。
回复 使用道具 举报 2 0
回答的挺好,还有其他的吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马