我应该在使用它们之前将我的变量初始化为null吗?

时间:2016-08-15 09:09:05

标签: java initialization

我看到很多SO帖子都说Java将任何未初始化的变量设置为null(如hereherehere ...)。

但最近,我接受了由Google here编写的此代码:

cur =  cr.query(builder.build(), INSTANCE_PROJECTION, selection, selectionArgs, null);
while (cur.moveToNext()) {
    String title = null;
    long eventID = 0;
    long beginVal = 0;

    // Get the field values
    eventID = cur.getLong(PROJECTION_ID_INDEX);
    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
    title = cur.getString(PROJECTION_TITLE_INDEX);

    // Do something with the values.
    ...
}

我真的宁愿这样做:

// Get the field values
long eventID = cur.getLong(PROJECTION_ID_INDEX);
long beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
String title = cur.getString(PROJECTION_TITLE_INDEX);

我认为Google开发人员在某种程度上是合格的,所以我想知道,因为我们处于同一范围:宣布第一种方式而不是第二种方式的优缺点是什么?

1 个答案:

答案 0 :(得分:7)

这是一个风格问题。我不会因为两个原因而不必要地初始化:

  1. 如果遇到未在所有控制路径上初始化的变量,那么Java编译器会给你一个额外的检查,因为编译不会成功。

  2. 它给人的印象是null是参考的可接受值,通常不是。