32

違いは何ですか :

  • Object o = null; と
  • Object o;(ただの宣言)

誰でも私に答えてもらえますか?

4

2 に答える 2

44

変数を宣言するスコープによって異なります。たとえば、 ローカル変数には、インスタンス変数がデフォルト値を取得するため、null を割り当てるインスタンス変数の場合と同様に、 nullを手動でdefault values割り当てる必要がある場合があります。

public class Test {
    Object propertyObj1;
    Object propertyObj2 = null; // assigning null is redundant here as instance vars get default values 

    public void method() {
        Object localVariableObj1;
        localVariableObj1.getClass(); // illegal, a compiler error comes up as local vars don't get default values

        Object localVariableObj2 = null;
        localVariableObj2.getClass(); // no compiler error as localVariableObj2 has been set to null

        propertyObj1.getClass(); // no compiler error
        propertyObj2.getClass(); // no compiler error
    }
}
于 2013-05-07T09:41:11.867 に答える
2

前述のように、オブジェクト参照はデフォルト値として使用されるため、instance variable割り当てる必要はありません。ただし、ローカル変数を初期化する必要があります。そうしないと、コンパイル エラーが発生します。nullnullThe local variable s may not have been initialized

詳細については、このリンクを参照してください。

于 2013-05-07T10:00:23.710 に答える