如何检查声明的int是否已使用变量初始化? number == null
无效,因为int是基本类型。
This question是无关紧要的,因为用户询问如何检查int是否为null,应答者使用integer对此作出响应。但是,我想检查原始数据类型int
是否已初始化。
This question也无关紧要,因为那是针对引用类型的,而我要的是原始类型。已经澄清-.-并仍被标记...
答案 0 :(得分:7)
实例字段初始化为null,0等。本地字段未初始化。除了尝试使用该字段并生成异常外,没有任何方法可以对此进行测试。一个好的做法是在声明局部变量时始终对其进行初始化。
答案 1 :(得分:1)
对于字段变量,您可以通过将int
字段的默认值0
与int
进行比较来检查:
private int x: // default 0 for an int
...
public void foo(){
if (x == 0){ // valid check
// ...
}
}
Built-in types have a default "reasonable" value:
默认值
声明字段时,不一定总是需要分配值。 声明但未初始化的字段将设置为 由编译器合理地默认。一般来说,这个预设 将为零或null,具体取决于数据类型。依靠这样 但是,默认值通常被认为是不好的编程 样式。
下表总结了上述数据的默认值 类型。
Data Type Default Value (for fields) byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' String (or any object) null boolean false
对于局部变量,不需要进行检查,甚至可以进行检查,因为编译器会为您进行检查。
如果有任何语句引用了未初始化的变量,则编译确实不会通过。
因此,检查int
局部变量的代码由于以下原因将不会自行编译:
public void foo(){
int a;
if (a==0) { // doesn't compile : The local variable a may not have been initialized
...
}
}