【问题标题】:What does an assignment expression evaluate to in Java?Java 中赋值表达式的计算结果是什么?
【发布时间】:2016-11-04 23:01:32
【问题描述】:

我在Java中遇到了一个语句

while ((line = reader.readLine()) != null) {
    out.append(line);
}

Java 中赋值操作如何返回值?

我们正在检查的语句是line = reader.readLine(),我们将其与null 进行比较。

由于readLine 将返回一个字符串,我们究竟如何检查null

【问题讨论】:

    标签: java expression file-handling assignment-operator


    【解决方案1】:

    Java 中的赋值运算符计算为分配的值(就像它在例如 中所做的那样)。所以这里会执行readLine(),并将其返回值存储在line中。然后根据null 检查存储的值,如果是null,则循环将终止。

    【讨论】:

      【解决方案2】:

      (line = reader.readLine()) != null

      表示

      1. 方法 readLine() 被调用。
      2. 结果赋值给变量line
      3. line 的新值将证明 null

      可能同时进行许多操作...

      【讨论】:

        【解决方案3】:

        赋值表达式被评估为它们的赋值值。

        (test = read.readLine())
        

        >>

        (test = <<return value>>)
        

        >>

        <<return value>>
        

        【讨论】:

        • 我的问题是表达式是否也根据您当时的情况返回某些内容(line=null),这是否意味着它会再次返回 null?
        • @sunder 我编辑了我的答案以解决您关于赋值表达式评估的问题。
        【解决方案4】:

        The Java® Language Specification 15.26. Assignment Operators

        在运行时,赋值表达式的结果是 赋值发生后的变量。

        【讨论】:

          【解决方案5】:

          reader.readLine() 为您读取并返回一行。在这里,您将返回的任何内容分配给 line 并检查 line 变量是否为空。

          【讨论】:

            猜你喜欢
            • 2013-05-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多