如何检查int是否已初始化?

时间:2018-08-03 19:34:37

标签: java initialization int

如何检查声明的int是否已使用变量初始化? number == null无效,因为int是基本类型。

This question是无关紧要的,因为用户询问如何检查int是否为null,应答者使用integer对此作出响应。但是,我想检查原始数据类型int是否已初始化。

This question也无关紧要,因为那是针对引用类型的,而我要的是原始类型。已经澄清-.-并仍被标记...

2 个答案:

答案 0 :(得分:7)

实例字段初始化为null,0等。本地字段未初始化。除了尝试使用该字段并生成异常外,没有任何方法可以对此进行测试。一个好的做法是在声明局部变量时始终对其进行初始化。

答案 1 :(得分:1)

对于字段变量,您可以通过将int字段的默认值0int进行比较来检查:

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     
      ...   
    }
}