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

标签 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. 这样做会破坏 Java 编译器给您的额外检查,因为如果遇到未在所有控制路径上初始化的变量,编译将不会成功。

  2. 它给人的印象是 null 是可接受的引用值,但通常情况下并非如此。

关于java - 我应该在使用变量之前将它们初始化为 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38952273/

相关文章:

java - 用于剖析的不同工具以及对hadoop map的某种监视会减少Java中的程序?

java - Docker:无法从 Spring Boot docker 镜像连接到 Elasticsearch

function - 拥有长初始化方法是不好的做法吗?

Char数组初始化困境

java - SwingWorker 进度条

java - RestTemplate 调用外部 API 时禁止(Cloudflare 服务器)

Java EE EJB 3.0 注释

arrays - 初始化类时设置数组类型

c++ - 使用变量创建/初始化新对象

c++ - 项目符号 [dcl.init]/7 (7.1)