java 静态代码块,构造代码块,构造函数的区别及执行顺序以及示例

静态代码块,构造代码块,构造函数的区别及执行顺序以及示例

构造函数:给特定的对象进行初始化;

构造代码块:给所有对象共同的特征进行初始化;

静态代码块:给类进行初始化,随着类的加载而加载;

执行顺序:静态代码块,构造代码块,构造函数

下面我们将给出两个示例

示例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是类的初始化内容,出现在创建对象之前,所有对象都用到了这个类,所以两者也相同。

扫描二维码关注公众号,回复: 2372663 查看本文章
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

猜你喜欢

转载自blog.csdn.net/qq_41901915/article/details/81173565