Java 检查变量是否已初始化

标签 java variables initialization

我需要使用类似于 php 的 isset 函数的东西。我知道 php 和 java 是非常不同的,但 php 是我以前对类似于编程的知识的唯一基础。是否有某种方法可以返回一个 boolean 值来判断实例变量是否已被初始化。比如……

if(box.isset()) {
  box.removeFromCanvas();
}

到目前为止,当我的程序试图隐藏或删除尚未构造的对象时,我遇到了一个运行时错误。

最佳答案

假设您对变量是否被显式赋值感兴趣,答案是“不是真的”。尚未显式分配根本的字段(实例变量或类变量)与已分配其默认值的字段(实例变量或类变量)之间绝对没有区别 - 0、false、null 等。

现在如果你知道一旦赋值,这个值就永远不会重新赋值为null,你可以使用:

if (box != null) {
    box.removeFromCanvas();
}

(这也避免了可能的 NullPointerException),但您需要注意“值为 null 的字段”与“未明确显示的字段”不同赋值”。 Null 是一个完全有效的变量值(当然对于非原始变量)。实际上,您甚至可能想将上面的代码更改为:

if (box != null) {
    box.removeFromCanvas();
    // Forget about the box - we don't want to try to remove it again
    box = null;
}

局部变量也可以看到差异,在“明确分配”之前无法读取它们 - 但可以明确分配的值之一是 null(对于引用类型变量):

// Won't compile
String x;
System.out.println(x);

// Will compile, prints null
String y = null;
System.out.println(y);

关于Java 检查变量是否已初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7509697/

相关文章:

java - 如何使用数组来验证另一个数组中的元素长度?

python - 为什么 foo = function() 在 Python 中运行函数?

scripting - 任何语言 : recycling Variables

javascript - 为每个类别添加一个循环编号

iphone - 在 iphone 应用程序中初始化模型时,如何最好地处理问题?

java - 缓冲输入流标记读取限制

java - 如何从 JAVA 中的两个集合中获取不匹配的字符串?

java - 如何使用集合添加列表(字符串数组)和arrayList?

machine-learning - 神经网络中的权重初始化

c++ - 如何静态初始化包含 union 的结构数组?