构造函数与非静态Init块

时间:2016-06-10 07:13:56

标签: java constructor initialization

我刚刚了解了init block。我知道两者(构造函数和非静态初始化块)可用于初始化类的成员。所以,我想知道两个中哪一个 更好/更多_useful 用于初始化类的成员以及 原因 。 我已阅读Use of Initializers vs Constructors in Java但我不认为它回答了我的问题(如果在这个问题中遗漏了任何内容,那么请提及它并用简单的文字解释。)

注意:我要求初始化非静态成员

提前谢谢你

1 个答案:

答案 0 :(得分:0)

如果你想多次初始化一个特定的东西,那么去非静态的其他去构造函数。 例如

public class test{
    int i;//you want to initialize i to 100 when any object is created then go for non static
    {
        i=10;
    }
    test(){}
    test(int x)
    {
    }
    test(String y)
    {
    }

    public static void main(String args[])
    {
        test t=new test();// i will be 10 during this
        // 
        test t1=new test("hello");// if you call this constructor also i will be 10
        //
        test t2=new test(10);// even if you call this constructor i will be 10
    }

如果你想在构造函数中初始化,那么将会有代码重复

public class test{
    int i;//there will be code duplication if you initialize in constructors


    test(){i=10;}
    test(int x)
    {
        i=10;
    }
    test(String y)
    {
        i=10;
    }

    public static void main(String args[])
    {
        test t=new test();// i will be 10 during this
        // 
        test t1=new test("hello");// if you call this constructor also i will be 10
        //
        test t2=new test(10);// even if you call this constructor i will be 10
    }

如果你想将i初始化为100然后你必须在所有构造函数中进行更改,那么这将是一个问题,但如果你采用非静态方式,那么你只需要在一个地方进行更改