假设我们有一个在某些条件下声明变量的情况:
if (x = 1)
boolean z = true;
稍后,我们想测试变量z是否存在try-catch。这是可能的吗?如果是的话,我们应该抓住什么例外?
try {
if (z)
//do smth
} catch (<exception?> ex) {
//do smth_else
}
当然可以在之前声明z并在if块中相应地更改它的值,但只是假设,在Java中可能是上述的吗? 例如,Python具有NameError,当未声明访问本地或全局变量时将引发该错误。
谢谢!
HSI。
答案 0 :(得分:2)
如果你声明你的变量怎么办:
Boolean x = null;
在这种情况下,您可以检查它是否为null
。
更好的选择是使用枚举来表示未初始化的值:
public enum MyEnum {
UNINITIALIZED, TRUE, FALSE;
}
因为如果你几个月后试图维护你的代码,那么你(或其他人)可能会对布尔值为空而感到困惑。
答案 1 :(得分:2)
如果我们使用的变量未声明或在当前范围内不可见,我们将收到编译错误。 如果它被声明,我们可以检查NullPointerException,如果它是对象。如果是原始数据类型,我们应该检查默认值。
答案 2 :(得分:1)
假设我们有一个在某些条件下声明变量的情况:
很难假设,因为那不会编译:
==
来测试相等性现在假设您将该声明包含在一个块中,该变量的范围将是该块,并且您将无法在try / catch块中使用它(除非它当然位于if块中,但是我认为这不是你想要的。)
答案 3 :(得分:0)
不,这在Java中是不可能的。您必须先声明变量才能引用它,否则会出现编译错误。
答案 4 :(得分:0)
Boolean z = null;
if (x = 1){
z = true;
}
if(z == null){
//not initialized
}else{
//initialized
}
答案 5 :(得分:0)
1,首先你的java语法错误:它可以跟随
if (x == 1)
boolean z = true;
2,在Java中你必须在使用之前声明变量。
答案 6 :(得分:0)
这是不可能的,Java是一种强类型编程语言,因为每个变量必须先用数据类型声明才能使用。
int x = 1;
boolean z = null;
if (x == 1)
z = true;
try {
if (z)
//do smth
} catch (NullPointerException npe ) {
//do smth_else
}
答案 7 :(得分:0)
到目前为止,据我所知,你将无法编译这段代码。我不记得任何异常课程,但我认为即使你是&#34;发明&#34;此类错误的例外情况。它不会编译。因为原始类型的默认值被分配给称为字段的未初始化的类变量,但是对于方法体中使用的变量,它会产生编译时错误