我看到很多SO帖子都说Java将任何未初始化的变量设置为null(如here,here或here ...)。
但最近,我接受了由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开发人员在某种程度上是合格的,所以我想知道,因为我们处于同一范围:宣布第一种方式而不是第二种方式的优缺点是什么?
答案 0 :(得分:7)
这是一个风格问题。我不会因为两个原因而不必要地初始化:
如果遇到未在所有控制路径上初始化的变量,那么Java编译器会给你一个额外的检查,因为编译不会成功。
它给人的印象是null
是参考的可接受值,通常不是。