fvu*_*fvu 28
Java的编译器不会让你定义变量并在它们被赋值之前使用它们,所以问题不存在于php中存在的相同形式.
如果在你的情况下编译器没有阻止你(因为这是例如一个实例变量),最好的解决方案可能是将变量初始化为某个"特殊"值,如Guest11239193所建议的那样.像这样:
int x = 0; // because by convention 0 is a reasonable default here
Run Code Online (Sandbox Code Playgroud)
当然,"安全,合理"的初始化值取决于应用程序.
之后,你可以
if (x == 0) { // only allow setting if x has its initial value
x = somenewvalue;
}
Run Code Online (Sandbox Code Playgroud)
或者您可以通过设置器访问x,该设置器禁止多次更改(对于大多数情况可能是过度杀伤):
private int x;
private boolean x_was_touched = false;
public void setX (int newXvalue) {
if (!x_was_touched) {
x = newXvalue;
x_was_touched = true;
}
}
public int getX() {
return x;
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用一个Integerint的对象兄弟,它可以被初始化为null
Integer x = null;
Run Code Online (Sandbox Code Playgroud)
但是,你认为你需要这些知识的事实可能会隐藏你的程序中更深层次的逻辑缺陷,所以我建议你探究一下你为什么想知道一个原始值(原始而不是对象,intvs Integer)是不是'的原因.触动了.