如何测试是否设置了变量?

Jie*_*eng 30 java variables

在PHP中,有一个isset功能.Java怎么样?我想我可以使用== null对象,但是值类型如何int

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)是不是'的原因.触动了.

  • @jiewmeng你能做到的唯一方法就是你有一个"神奇的值"意味着"尚未设置",或者你通过setter方法设置属性时设置了一个标志.正如其他人所说,你想要的东西在Java中并没有多大意义. (2认同)

Mob*_*Mob 12

Java中不存在不存在的变量.


Pau*_*nto 5

在Java中,使用变量而不进行设置是一个编译器错误.

类和实例变量使用被认为是默认的"null"值进行初始化,具体取决于数据类型.

所以isset类似的功能没有意义.