Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java =运算符在三个整数上使用两次时做什么?_Java - Fatal编程技术网

Java =运算符在三个整数上使用两次时做什么?

Java =运算符在三个整数上使用两次时做什么?,java,Java,这有什么用 int x = 1; int y = 2; int z = 3; x = y = z; 我在一些开源项目中遇到过很多类似的事情,并且总是被它们弄糊涂。我所说的=运算符是指在三个整数上使用两次,即x=y=z。我需要明白这一点。谢谢 运算符=计算右侧,并将结果分配给左侧的变量。表达式返回此值 要使其工作,评估将从右向左进行: x = (y = z); y变为3,返回的值为3。因此,x也被分配为3。=从右向左求值 x=y=z将使x和y等于z,即=3请阅读一些规范: There are

这有什么用

int x = 1;
int y = 2;
int z = 3;
x = y = z;

我在一些开源项目中遇到过很多类似的事情,并且总是被它们弄糊涂。我所说的=运算符是指在三个整数上使用两次,即
x=y=z。我需要明白这一点。谢谢

运算符
=
计算右侧,并将结果分配给左侧的变量。表达式返回此值

要使其工作,评估将从右向左进行:

x = (y = z);

y
变为3,返回的值为3。因此,
x
也被分配为3。

=
从右向左求值


x=y=z
将使
x
y
等于
z
,即=
3
请阅读一些规范:

There are 12 assignment operators; all are syntactically right-associative (they group right-to-left). Thus, a=b=c means a=(b=c), which assigns the value of c to b and then assigns the value of b to a.
另见


  • 在大多数语言中,
    =
    代表赋值运算符,规则是赋值运算符的左侧必须是变量/对象。(您也可以这样做
    object1=object2
    ,但是
    object2
    的引用将是此处的值)

    您不能执行
    2=3
    2=2
    这里发生的是您首先将
    z的值赋值为y

    x=y=z

  • y=z
  • x=y
  • 这里它是从右到左计算的,因此
    y
    z
    的值,而
    x
    y

    这里可能需要注意的是,您不能直接执行
    x=4=5

    It must be variable=variable=(value/variable)<------------------
    

    必须是variable=variable=(value/variable)
    =
    运算符将右侧表达式的值分配给左侧的变量。
    因此,在
    x=y=z
    中,
    z
    的第一个值将分配给
    y
    ,然后分配给
    x
    STEP 1 : x=(y=z) /assign value of z to y.
    STEP 2 : x=y /assign value of y to x.
    

    因此x的值将是3。

    赋值运算符始终计算右侧表达式,使您的语句等价于

    //this expression is equal to 
    x=y=z;
            y=z;
            x=y;
    //so first y becomes 3 and the value assign to x
    //means first assign the value of z to y than assign the value of y to x
    

    x=y=z
    x=(y=z)

    首先,y被赋值为z的值,即e3,然后结果被赋值为x


    最后,值将是从右到左计算的
    x=3
    y=3
    z=3
    运算符

    所以,当您编写
    x=y=z
    时,它从右手侧到左手侧起作用

    1。y=z,即z的值分配给y

    2。然后x=y,即y的新值现在分配给x

    比如说,

    如果x=1、y=2和z=3,则在x=3、y=3和z=3的值之后

    以这种方式分配值


    x=y=z试试看!!!使用打印值并检查。。或者,如果您使用像eclipse或netbeans这样的IDE,则使用调试模式。