java类成员初始化

时间:2010-09-17 13:28:21

标签: java constructor initialization

我有点惭愧地问,作为Java程序员已经多年了,但是这里有: 在构造期间分配对象和在声明相关字段时直接执行此操作之间是否存在差异?也就是说,以下两者之间是否存在差异:

public class MyClass{
    MyObj obj=new MyObj();
}

public class MyClass{
    MyObj obj;
    public MyClass() {
        obj=new MyObj();
    }
}

当然,我认为这个特定的init不依赖于外部参数。

2 个答案:

答案 0 :(得分:3)

  

实例变量初始化构造函数调用

之前完成      

不好做。
  您可以限制用户调用const。如果要在初始化之前执行某些操作。

最佳实践:

  
      
  1. 不要使用声明中的默认值进行初始化(null,false,0,0.0 ...)。
  2.   
  3. 如果您没有更改字段值的构造函数参数,则首选声明中的初始化。
  4.   
  5. 如果字段的值因构造函数参数而更改,则在构造函数中放置>初始化。
  6.   
  7. 在练习中保持一致。 (最重要的规则)
  8.   

来自here

答案 1 :(得分:2)

不,没有。除非你添加多个构造函数,否则你将有重复的代码。

另一种方法是使用初始化程序块

{
   var = 1;
}

参考:Initializing Fields