在方法调用期间分配和递增值

xwh*_*hyz 6 java primitive increment

任何人都可以解释为什么这样的电话不会增加我的i价值?

int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));
Run Code Online (Sandbox Code Playgroud)

它离开i=0而不是至少增加一个,使得在第二次调用中它是1.

Mar*_*oun 7

i = i++ 就像在做:

int old_i = i; 
i = i + 1;
i = old_i; 
Run Code Online (Sandbox Code Playgroud)

实际发生的是,值i++是增量发生i 之前的值,然后i得到...的值i.

在一行i++中将使用旧值,i然后它将增加它.