我看到很多 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 开发人员在某种程度上真的很合格,所以我想知道,因为我们在同一范围内:声明第一种方式而不是第二种方式的优缺点是什么?
最佳答案
这是一个风格问题。我没有进行不必要的初始化,原因有二:
这样做会破坏 Java 编译器给您的额外检查,因为如果遇到未在所有控制路径上初始化的变量,编译将不会成功。
它给人的印象是
null
是可接受的引用值,但通常情况下并非如此。
关于java - 我应该在使用变量之前将它们初始化为 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38952273/