Home » Java » Chaining array assignment in Java

Chaining array assignment in Java

Posted by: admin December 28, 2021 Leave a comment

Questions:

Consider the following code snippet in Java. I know that the statement temp[index] = index = 0; in the following code snippet is pretty much unacceptable but it may be necessary for some situations:

package arraypkg;

final public class Main
{
    public static void main(String... args)
    {
        int[]temp=new int[]{4,3,2,1};
        int index = 1;

        temp[index] = index = 0;
        System.out.println("temp[0] = "+temp[0]);
        System.out.println("temp[1] = "+temp[1]);
    }
}

It displays the following output on the console.

temp[0] = 4
temp[1] = 0

I do not understand temp[index] = index = 0;.

How does temp[1] contain 0? How does this assignment occur?

Answers:

The assignment is done (temp[index] = (index = 0)), right associative.

But first the expression temp[index] is evaluated for the LHS variable. At that time index is still 1. Then the RHS (index = 0) is done.

###

Your statement assigned zero to it. The statement temp[index] = index = 0 wrote zero into index AND into temp[index]. That’s what that meant. Make all variables to the left of an assignment operator 0.

###

What that line does is say that temp[index] should equal index after index is assigned the value 0.

This is why this syntax is mostly unacceptable. It’s hard to read and most people don’t understand it.

###

you assigned both temp[1] and index to ‘0’
it running left to right.
think ass temp[index/* */]