Java中实例变量的初始值

gam*_*ver 1 java

在Java中,与C++不同,我们可以在其声明中为字段提供初始值:

public class BedAndBreakfast {

    public int capacity = 10;  //initialize to 10

    private boolean full = false;  //initialize to false
}
Run Code Online (Sandbox Code Playgroud)

为什么在构造函数中可以更清楚地完成它时需要允许它?

Kon*_*lph 7

为什么在构造函数中可以更清楚地完成它时需要允许它?

这是一个非常主观的陈述.显然,Java开发人员感觉不同(就像我一样).


Boz*_*zho 6

如果使用属性定义默认值,则更清楚.如果您有多个构造函数,则必须在每个构造函数中定义值,这很难看.

最终,编译器将这些值放在每个构造函数中,因此最终结果是相同的.它更易读,更容易支持.

更新:正如BalusC在他的评论中指出的那样,您可以使用初始化程序块,编译器会再次将其附加到每个构造函数:

{ 
  var1 = 10;
  var2 = false;
}
Run Code Online (Sandbox Code Playgroud)