0

私の理解が正しいかどうか誰かに検証してもらいたいです。次のようなコードがあります。

public class A {
int a;
int b;
public A(int a)
{
    this.a=a;
}

現在、 A() は私が定義したコンストラクターです。これは、デフォルトのコンストラクターではないことを意味します。したがって、このクラスを拡張するサブクラスがあるとします。

public class B extends A{
public B()
{ 
   super(15);
}

}

サブクラスで a と b の両方の値を出力すると、a が値 15 を取得し、b が値 0 を取得することがわかります。クラス A の b の初期化されていないフィールドの値は 0 ですか?

4

4 に答える 4

6

intはプリミティブ型であり、 にすることはできませんnull。デフォルト値は です0

于 2012-08-07T21:03:22.853 に答える
0

JLSの関連部分は、クラス フィールドが指定されていない場合、デフォルト値で自動的に初期化されると述べています。

于 2012-08-07T21:06:05.323 に答える
0

この場合、初期化されていないフィールド b は、java の int のデフォルト値 0 を取得します。

http://docs.oracle.com/javase/specs/

于 2012-08-07T21:07:05.517 に答える