java - 这样初始化非静态成员变量会有问题吗?

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

最佳答案

您可以使用变量声明或构造函数进行初始化。有些人会争辩说,其中一个更好,但其中一个有效。我相信构造函数中初始化的参数是为了使所有变量初始化都在同一个位置,因为在某些情况下并非所有内容都可以在构造函数之外初始化。

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。另外,构造函数比使用静态方法要好得多。

关于java - 这样初始化非静态成员变量会有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15656690/

相关文章:

c++ - 如何初始化一个静态成员

linux - 我如何使用一组指令的输出来创建一个新变量?

javascript - 字符串内的变量 字符串内的变量

java - Android:更新窗口内 View 的线程

java - 如何模拟 JTextField 上的单击?相当于 JButton doClick()?

variables - 在机器人框架中找不到变量定义

java - 如何摆脱递归方法调用的先前迭代?

java - 使用私有(private)静态方法初始化静态变量

java - 如何解析我的 json 结果

java - 调整表头大小