构造代码块与静态构造代码块
构造代码块与静态构造代码块
Syntax
[修饰符] ... class [类名] {
[修饰符] [static] ... [类型][静态属性]
...
[修饰符] ... [类型][普通属性]
...
static { //静态构造代码块
...
}
{ //构造代码块
...
}
[修饰符] ... [构造方法](){
...
}
[修饰符] ... [返回值] [普通方法]() {
...
}
}
构造代码块与静态构造代码块是一种特殊的应用,会在类的诞生和对象的诞生进行调用
静态构造代码块被用作对静态变量进行初始化
构造代码块在实际运用中较少
用一段代码来解释
public class Student {
static String name;
int age;
String id;
static {
System.out.println(name);
System.out.println("我是静态构造代码块");
System.out.println("static{...}");
name = "static{...}"; //这里不能用this.name ,因为this表示对象自己,但这个时候不可能有对象
}
{
System.out.println("this.name="+this.name);
System.out.println("我是构造代码块");
System.out.println("{...}");
this.name = "{...}";
}
public Student() {
System.out.println("this.name="+this.name);
System.out.println("我是构造方法");
this.name = "hello world...";
this.age = -1 ;
this.id = "null" ;
}
public static void main(String[] args) {
Student student = new Student();
System.out.println("name="+student.name);
System.out.println("age="+student.age);
System.out.println("id="+student.id);
System.out.println("========================");
Student student1 = new Student(); // 再new一个看看结果
}
}
输出结果
null
我是静态构造代码块
static{...}
this.name=static{...}
我是构造代码块
{...}
this.name={...}
我是构造方法
name=hello world...
age=-1id=null
========================
this.name=hello world...
我是构造代码块
{...}
this.name={...}
我是构造方法
结论
一类的诞生到一个对象诞生的细节
- 类诞生了
- 创建静态变量
- 调用静态构造代码块
- 对象诞生了
- 创建普通变量
- 调用构造代码块
- 调用构造方法
- ......
注意:静态构造代码块只执行一次,也就是类诞生的那一次,因为类的诞生在程序运行当中只进行一次。
在实际实验当中,main方法再次new了一个对象,但是没有执行静态构造代码块的语句
浙公网安备 33010602011771号