版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hju22/article/details/83868945
一、构造代码块
- 形式: 只用{}包围的代码块。
- 作用:给所有对象进行统一的初始化。
- 执行顺序:创建对象时,会先执行构造代码块,然后再执行构造函数。
- 构造代码块和构造函数的比较:
相同点:都是给对象进行初始化的。
不同点:构造代码块是给所有对象进行统一的初始化。构造函数是给对应的对象初始化。
二、使用
例1:测试构造代码块的执行顺序
以下代码创建了两个对象。每个对象创建过程中,都是先执行了构造代码块,然后再执行对应的构造函数。
package com.initialization;
/**
* 构造代码块:对所有对象初始化,先于构造函数
*/
public class ConstructCodeBlock {
public static void main(String[] args) {
Person per1=new Person();
System.out.println();
Person per2=new Person("有参");
}
}
class Person{
{
System.out.println("构造代码块在执行");
}
Person(){
System.out.println("无参构造函数在执行");
}
Person(String str){
System.out.println("有参构造函数在执行");
}
}
结果:
例2:构造代码块的实际使用
package com.initialization;
/**
* 构造代码块的实际使用
*/
public class ConstructBlock {
public static void main(String[] args) {
System.out.println("****创建第一个学生****");
Student stu1=new Student("小明");
System.out.println();
System.out.println("****创建第二个学生****");
Student stu2=new Student(13);
}
}
class Student{
String area;
String name;
int age;
{
area="北京";
System.out.println("所在地区:"+area);
}
Student(String name){
this.name=name;
System.out.println("姓名:"+this.name);
}
Student(int age){
this.age=age;
System.out.println("年龄:"+this.age);
}
}
结果:
三、总结
构造代码块用于对象的初始化。
所有对象创建过程中都会执行构造代码块。
构造代码块执行后,才执行构造函数