Java – x = x equals x = 2x 1: why?

The question is just curiosity: I want to know what the value of some int x is after the x = x line

int x=10;
x+=++x;
System.out.println(x);

It prints out:

21

After testing with some other values, it seems to be equivalent to x = 2x 1 Why? Is this line interpreted by the compiler as a byte operation? (by the way, x = x seems to be equal to x = 2x)

I don't think this is what I used in the project, but I'd like to know why I got this result

Thank you for any explanation or hint

Editor: first of all, thank you for your answer

I know how the = operator works, as well as X and X, but for some reason (completely logical and obvious) the result seems strange to me. I should have considered it. Sorry for your time!

Solution

Its calculation method is

>Step 1: x = x > Step 2: change to x = 10 (increment x) 11 > Step 3: the final result is stored in X, i.e. 21

This is proof that:

I created a mainclass as follows:

public class MainClass{
public static void main(String...s){
int x = 10;
x += ++x;
}
}

Then use javap - C mainclass to check the bytecode

public static void main(java.lang.String...);
    Code:
       0: bipush        10     // push 10 onto stack
       2: istore_1             // store 10 in local variable 1
       3: iload_1              // load local variable 1 (Now 10) back to stack
       4: iinc          1,1   //increment local variable 1 by 1
       7: iload_1              // load local variable 1  (Now 11) back to stack
       8: iadd                 // add top 2 variable on stack ( 10 and 11)
       9: istore_1             // store 21 to local variable 1
      10: return
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>