【问题标题】:Variable assignment: int x = x = 1 [duplicate]变量赋值:int x = x = 1 [重复]
【发布时间】:2015-08-27 06:13:04
【问题描述】:

这是Java编译器允许的,它在做什么?

int x = x = 1;

我知道 x 是分配给 x 的,但它怎么会有两个=s?

【问题讨论】:

  • 你编译了吗?比你不问我们就知道第一个问题的答案
  • Eclipse 说 x 被设置为 x。

标签: java


【解决方案1】:

x = 1 将值 1 分配给 x 并“返回”1,它允许这样的事情:

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

【讨论】:

  • P.S.在 java 中,这种事情在大多数情况下都被认为是代码异味——唯一一次有时是好的(取决于你与谁交谈)类似于上面的示例
【解决方案2】:

从右到左读取赋值语句:

根据Assignment Operators

有12个赋值运算符;都是语法上的 右关联(它们从右到左分组)。因此,a=b=c 意味着 a=(b=c),将c的值赋给b,然后赋值 从 b 到 a。

所以,

int x = x = 1; 

一样
x = (x = 1); 

然后

x = 1; x = x;

【讨论】:

    【解决方案3】:

    int xx 放入堆栈。

    右侧部分x = 1 将1 分配给x。但这是一个值为 1 的 表达式

    最后重新分配给x

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2012-10-06
      • 2021-09-14
      相关资源
      最近更新 更多