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

时间:2011-10-09 12:53:02

标签: java variables

在PHP中,有一个isset函数。 Java怎么样?我想我可以将== null用于对象,但是像int

这样的值类型呢?

9 个答案:

答案 0 :(得分:28)

Java的编译器不会让你定义变量并在它们被赋值之前使用它们,所以问题不存在于php中存在的相同形式。

修改

如果在你的情况下编译器没有阻止你(因为这是例如一个实例变量),最好的解决方案可能是将变量初始化为一些“特殊”值,如Guest11239193所建议的那样。像这样:

int x = 0; // because by convention 0 is a reasonable default here

当然,“安全,合理”的初始化值取决于应用程序。

之后,你可以

if (x == 0) { // only allow setting if x has its initial value
    x = somenewvalue;
}

或者您可以通过设置器访问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;
}

您还可以使用Integer,int的对象兄弟,可以将其初始化为null

Integer x = null; 

然而,你认为你需要这些知识的事实可能会隐藏你的程序中更深层次的逻辑缺陷,所以我建议你探究你为什么想知道一个原始值(原语而不是对象,{{ {1}} vs int)未被触及。

答案 1 :(得分:11)

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

答案 2 :(得分:5)

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

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

所以类似isset的函数没有意义。

答案 3 :(得分:3)

您无法检查变量是否已设置。你可以:

  1. 初始化有意义的变量作为初始值 - 例如计数器的0,如果计算最小值则为最大整数值等。
  2. 将变量初始化为您不会使用的值,例如-1,如果您要使用无符号整数值和字符串的空字符串。
  3. 引入一个布尔标志,指示您是否已开始做某事。

答案 4 :(得分:1)

int的默认值为0string的默认值为""

答案 5 :(得分:0)

您可以尝试使用Object而不是原始值,即


Integer x = null;
...
public Integer getX(){
   if(x == null) {
      x = new Integer(10);
   }
   return x;
}

答案 6 :(得分:0)

为该控件创建函数,因为每个对象都有自己的关于“isset()result”;

的规则

示例:

    public static final boolean isEmpty(String x) {
        return (x == null || x.trim().equals(""));
    }
    public static final boolean isEmpty(Integer x) {
        return (x == null || x == 0);
    }
    public static final boolean isEmpty(Long x) {
        return (x == null || x == 0);
    }
    public static final boolean isEmpty(Collection<?> x) {
        return (x == null || x.size() == 0);
    }
    public static final boolean isEmpty(Map<?,?> x) {
        return (x == null || x.size() == 0);
    }
    public static final boolean isEmpty(Object[] x) {
        return (x == null || x.length == 0);
    }

答案 7 :(得分:0)

想要具有未定义值的最常见用例是从数据源检索信息时。在任何给定的SQL查询中,您可能都有记录,这些记录的整数值为0,但也可以是空/空字段。字符串也是如此,其中空字符串''与未定义或空字符串不同。

看来,使用本机类型的对象引用版本是这里的唯一解决方案,这很不幸,因为它很杂乱。另一种方法是为每个必须手工检查和维护的数据字段存储一个布尔值,这甚至更糟。

答案 8 :(得分:0)

在Java中声明的整数变量不能满足"undefined""null"的条件。但是,通过使用wrapper class,我们可以使用它,即:{{1} }

Integer a = null;