以这种方式初始化非静态成员变量会有任何问题吗?

时间:2013-03-27 10:30:54

标签: java variables static initialization

我已在下面的代码中初始化变量,如下所示。可以像这样初始化吗?

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();
    }
}

2 个答案:

答案 0 :(得分: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。另外,构造函数比使用静态方法更好。

答案 1 :(得分:2)

就个人而言,我只是在构造函数中初始化它而不是getInt()

除非你打算在外部使用getInt()函数,否则我没有意识到这一点,特别是因为它返回了一个硬编码值。