Java操作数用法

Java操作数用法,java,Java,有人能解释一下为什么输出是: int a = 3; int b = (a=2)*a; int c = b * (b=5); System.out.println("a=" + a + " b=" + b + " c=" + c); 而不是 a=2 b=5 c=20 因为它通常是最后一个优先,括号会在非括号运算符之前上移。你可以这样想: a设置为3 a设置为2,返回2。然后乘以a的新值,即2,将b设置为4 4(旧的b)乘以b=5的结果,即5b现在是5,而c被设置为4x5值(20) 因为它通常是

有人能解释一下为什么输出是:

int a = 3;
int b = (a=2)*a;
int c = b * (b=5);
System.out.println("a=" + a + " b=" + b + " c=" + c);
而不是

a=2 b=5 c=20
因为它通常是最后一个优先,括号会在非括号运算符之前上移。你可以这样想:

  • a
    设置为3
  • a
    设置为2,返回2。然后乘以
    a
    的新值,即2,将
    b
    设置为4
  • 4(旧的
    b
    )乘以
    b=5的结果,即5
    b
    现在是5,而
    c
    被设置为
    4x5
    值(20)
  • 因为它通常是最后一个优先,括号会在非括号运算符之前上移。你可以这样想:

  • a
    设置为3
  • a
    设置为2,返回2。然后乘以
    a
    的新值,即2,将
    b
    设置为4
  • 4(旧的
    b
    )乘以
    b=5的结果,即5
    b
    现在是5,而
    c
    被设置为
    4x5
    值(20)

  • 在第二条语句中,您已将
    b
    重新分配给a 5。因此,
    b
    将为5,直到再次分配为止。这其中的哪一部分让您感到困惑?

    您在第二个语句中将
    b
    重新分配给了a 5。因此,
    b
    将为5,直到再次分配为止。这其中的哪一部分让您感到困惑?

    您在第三行将5分配给b。这就是它所包含的内容。

    在第三行中,您将5赋值给b。所以,这就是它包含的内容。

    b是5,因为这个(b=5)

    因此a为2(a=2)

    c是20,因为这4*(b=5)

    b是5,因为这(b=5)

    因此a为2(a=2)


    c是20,因为这4*(b=5)

    哦,现在我明白了。我忘了第二项作业。我问了这么愚蠢的问题……哦,现在我明白了。我忘了第二项作业。我问了一个如此愚蠢的问题..@Cruncher我不认为这是一个比较作业,只是一个误解scope@inquisitiveIdiot哦,我都没看那么近。我刚刚看到一个表达式中的
    b=5
    ,有点assumed@Cruncher我不认为这是一个比较,只是一个误解scope@inquisitiveIdiot哦,我都没看那么近。我刚刚看到一个表达式中的
    b=5
    ,有点像是假设的
    a=2 b=4 c=20