我刚刚了解了init block。我知道两者(构造函数和非静态初始化块)可用于初始化类的成员。所以,我想知道两个中哪一个 更好/更多_useful 用于初始化类的成员以及 原因 。 我已阅读Use of Initializers vs Constructors in Java但我不认为它回答了我的问题(如果在这个问题中遗漏了任何内容,那么请提及它并用简单的文字解释。)
注意:我要求初始化非静态成员。
提前谢谢你
答案 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然后你必须在所有构造函数中进行更改,那么这将是一个问题,但如果你采用非静态方式,那么你只需要在一个地方进行更改