静态代码块,构造代码块,构造函数的区别及执行顺序以及示例
构造函数:给特定的对象进行初始化;
构造代码块:给所有对象共同的特征进行初始化;
静态代码块:给类进行初始化,随着类的加载而加载;
执行顺序:静态代码块,构造代码块,构造函数
下面我们将给出两个示例
示例1演示顺序问题
实例2演示具体内容问题
示例1:执行顺序问题
public class Gouzaohanshu {
public static void main(String[] args)
{
person p1=new person(20);
}
}
class person
{ int age;
{
System.out.println("构造代码块");
}
static
{
System.out.println("静态代码块");
}
person(int age)
{
System.out.println("构造函数");
this.age=age;
}
}
执行结果:
静态代码块
构造代码块
构造函数
示例2:内容演示
在这里面我们一共创建了两个person对象,我们通过构造函数给age进行初始化,两个人分别为20和21,之后我们同时建立了eye和nose成员变量,eye是所有对象的初始化内容,所以两者相同,nose是类的初始化内容,出现在创建对象之前,所有对象都用到了这个类,所以两者也相同。
public class Gouzaohanshu {
public static void main(String[] args)
{
person p1=new person(20);
person p2=new person(21);
System.out.println(p1.eye);
System.out.println(p1.nose);
System.out.println(p1.age);
System.out.println(p2.eye);
System.out.println(p2.nose);
System.out.println(p2.age);
}
}
class person
{ int age;
int eye;
static int nose;
{
eye=2;
}
static
{
nose=1;
}
person(int age)
{
this.age=age;
}
}
运行结果:
2
1
20
2
1
21