Java 中赋值表达式的计算结果是啥?

Posted

技术标签:

【中文标题】Java 中赋值表达式的计算结果是啥?【英文标题】: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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

表示

    方法 readLine() 被调用。 结果赋值给变量lineline 的新值将证明 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 变量是否为空。

【讨论】:

以上是关于Java 中赋值表达式的计算结果是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java中&是啥意思?

C语言中三目运算符是啥?

c语言中num是啥意思

C语言中num/=10是啥意思

C语言问题 赋值表达式返回值是啥?比如j=0这个表达式的返回值是啥?

c语言中规定 赋值运算符的左边必须是啥?