2012-12-28 18 views

回答

0

公共FOO(){ X = 0; }

这将是很好的。如果你使用这个int x = 0它将用于所有对象。但构造函数表示法是针对由特定构造函数创建的对象的。而参考变量与空值分配原始类型的

0

实例变量隐含地初始化。

所以,如果你想分配像::

int x=0; 

这将是X = 0的所有对象。

但在构造函数的情况下,你可以在不同的构造不同的值初始化它们,但它不是一个很好的做法,在不同的构造不同的值初始化。

1

两者都很好,只要你知道会发生什么。

在它们将被初始化的顺序是这样的:

  1. 类成员(如:public int x = 0;
  2. 构造(如:this.x = 0;

然而,初始化整数零是一个没有操作。 Java会自动执行此操作。

一个小的演示证明忽略初始化顺序的错误:

class Foo 
{ 
    public String str; 
    public String strTwo = "Here is str: " + str; 

    public Foo() 
    { 
     str = "Java"; 
     System.out.println(strTwo); 
    } 
} 

这将打印Here is str: null

0

不喜欢的Java时,它的声明或初始化该领域,而在构造函数?

如果使用默认值进行初始化,则在构造函数中或声明时初始化它将是多余的。

但是,如果你想与默认值不同的值初始化,构造函数应该在delaration使用。

从设计的角度来看哪个更受欢迎?

从设计角度看,没有任何区别。它是实施细节。

0

我的选择是初始化默认值以外的构造像

int x=0; 

所以,如果你有多个构造和很多实例变量,你不会忘了初始化。如果我需要变量的特定值,那么我将在构造函数中重新初始化。

0

从我所记得的情况来看,编译器在两种情况下生成的字节码都非常相似,而且它实际上只是一种偏好和编码风格。就个人而言,我倾向于在构造函数中初始化变量 - 在某些情况下,无论如何您都必须在构造函数中初始化变量(例如将参数传递给构造函数时),这意味着您只需要在一个地方查看就能理解到底是怎么回事,而不是2

(在一个侧面说明 - 在您的例子有没有必要做“INT X = 0”自定义“INT X;”会自动把它设置为0)