先上代码:
class StaticCode{
int age;
// static代码块
static{
System.out.println("static代码块");
}
//构造代码块
{
System.out.println("构造代码块 55 ");
}
// 构造函数
StaticCode(int age){
this.age=age;
System.out.println("StaticCode方法 age="+age);
}
void show(){
// 局部代码块
{
int age=30;
}
System.out.println("show() age="+age);
}
}
class StaticCodeDemo{
public static void main(String[] args){
StaticCode p1=new StaticCode(20);
System.out.println("---------");
p1.show();
System.out.println("---------");
StaticCode p2=new StaticCode(20);
}
}
输出:
static代码块
构造代码块 55
StaticCode方法 age=20
---------
show() age=20
---------
构造代码块 55
StaticCode方法 age=20
分析:
- 先执行StaticCode这个类,
static代码块
- 创建p1对象,执行
构造代码块
,构造代码块 55 - 执行
构造函数
初始化,StaticCode age=20 - 执行p1.show(),show() age=20
- 创建p2对象,执行
构造代码块
,构造代码块 55 - 执行
构造函数
初始化,StaticCode age=20
结论:
static 代码
块随着类的加载,只加载一次
。作用是初始化类。构造代码块
,可以给所有对象进行初始化的。创建几个
对象就调用几次
,是给对象进行通用性的初始化。构造函数
是给对应的对象进行针对性的初始化。局部代码块
限定函数中变量的生命周期,age=30局部代码执行完。自动释放掉了。- 在类内部
{}
只是代表在调用构造函数
之前在{}
中初始化,static{}
只在类加载
时调用。