2

以下のコードで次のように変数を初期化しました。このように初期化しても大丈夫ですか?

public class StaticInit {

    int x = getInt();
    String z = "Lucky Number " + processInt(x);

    public static int getInt() {
        int ret = 10;
        System.out.println("ret- " + ret);
        return ret;
    }

    public static int processInt(int toProcess) {
        int toRet = toProcess / 2;
        System.out.println("toRet- " + toRet);
        return toRet;
    }

    public static void main(String[] args) {
        StaticInit sit = new StaticInit();
    }
}
4

2 に答える 2

2

変数宣言またはコンストラクターで初期化できます。どちらかが優れていると主張する人もいますが、どちらも機能します。コンストラクターでの初期化の議論は、すべての変数の初期化が同じ場所にあるということだと思います。場合によっては、コンストラクターの外部ですべてを初期化できるわけではないからです。

public class StaticInit {

    int x = getInt();
    String z = "Lucky Number " + processInt(x);

}

また

public class StaticInit {

    int x;
    String z;

    public StaticInit() {
        x = 10;
        z = x / 2;
    }
}

特にこの場合はz、に依存しているため、コンストラクターを使用することを強くお勧めしxます。さらに、コンストラクターは静的メソッドを使用するよりもはるかに優れています。

于 2013-03-27T10:33:16.030 に答える
2

個人的には、を使用する代わりにgetInt()、コンストラクターで初期化するだけです。

関数を外部で使用する場合を除いて、特にハードコードされた値を返すため、関数を使用するgetInt()意味がわかりません。

于 2013-03-27T10:34:00.220 に答える