5

以下のコードを参照してください。メソッド printTest() は初期化されていない変数のデフォルト値を出力していますが、メインメソッドになると Java は変数の初期化を求めています。誰でも理由を説明できますか?

   public class Test1 {

    public static void main(String[] args) {   
      int j;
      String t;

      System.out.println(j);
      System.out.println(t);
    }
  }


  public class Test2 {

   int i;
   String test;

  public static void main(String[] args)   {   
    new Test().printTest();
  }

   void printTest()   {
     System.out.println(i);
     System.out.println(test);
  }

  }
4

7 に答える 7

2

グローバル変数はどこにも初期化されていません。var i を印刷して、見られない/存在しない値でテストしようとしています。null でも 0 でも空白でもありません。

あなたのケースはこれに少し似ています(回答から: Uninitialized int vs Integer )

i == 0; Uninitialized
i == null; Undefined
test == 0; java.lang.NullPointerException
test == null; Uninitialized

しかし、メインメソッドになると、Java は変数の初期化を求めています。

i と t であるローカル変数は、グローバル変数と同様のケースです。

変数を初期化する必要があります。個人的には、変数を使用した計算には初期値が必要であり、そうしないと存在しないと思います。

コンピューターは現在、計算/数学の物理的な使用に基づいているため、数学のルールが何であれ、量子またはそれ以上の計算の新しい段階に入っていない限り、コンピューターにも適用されます。

数学では、変数は、特定の問題または一連の操作の範囲内で変化する可能性がある値を指定する記号 (通常はアルファベット文字) です。

(出典: http://en.wikipedia.org/wiki/Variable_(mathematics) )

したがって、そのルールが与えられた場合、私にとって値のない変数は存在しない空です = x は空であり、誰もそれを見ることができないため、空を計算する既知の方法はありません。

于 2013-10-18T07:27:11.360 に答える
0

ここであなたのプログラムでは、if-elseループで変数を使用したため、変数は何らかの値を運ぶ必要があり、プログラムがelseループに移動するかどうかがわかるように、「sizeDisplay」として表示するものは何もないため、sizeDisplayが必要です「null」として初期化されます。

于 2017-11-10T06:36:07.910 に答える