为什么在Java中允许初始化引用为空?

时间:2014-11-10 21:58:20

标签: java compiler-construction null initialization

在下面的使用JDBC的示例中(虽然这个问题不是特定于JDBC):

Connection conn = null;

try
{
  ..... Do the normal JDBC thing here  ....
}
catch(SQLException se)
{
   if(conn != null)
   {
     conn.close();
   }
}

如果我没有将conn初始化为null,那么编译器会抱怨在catch块中我无法使用尚未初始化的引用。

Java默认情况下将对象引用初始化为null,那么为什么我需要将其显式初始化为null。如果编译器不喜欢开头为null的引用的原始值,为什么它甚至接受我的显式初始化?

注意:我使用Eclipse Luna作为我的IDE。

1 个答案:

答案 0 :(得分:8)

它只会在类范围内将变量初始化为null。您位于方法范围内,因此必须将变量显式初始化为null。

如果变量是在类级别定义的,那么它将被初始化为null。