繁体   English   中英

Java 检查变量是否已初始化

[英]Java check to see if a variable has been initialized

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

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

到目前为止,当我的程序试图隐藏或删除尚未构建的对象时,我遇到了这个问题。

假设您对变量是否已显式赋值感兴趣,答案是“不是真的”。 但绝对的字段(实例变量或类变量)并没有在所有明确分配还没有任何区别,并且已经把它的缺省值为一个- 0,假,空等等。

现在,如果您知道一旦分配,该值将永远不会重新分配空值,您可以使用:

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);

实例变量或字段以及静态变量根据变量类型分配默认值:

  • 整数: 0
  • 字符: \0
  • 双倍: 0.0
  • 布尔值: false
  • 参考: null

只是想澄清一下局部变量(即在块中声明,例如方法、for 循环、while 循环、try-catch 等)未初始化为默认值,必须显式初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM