Java 方法调用期间赋值和递增值
有人能解释一下为什么这样的调用不会增加我的Java 方法调用期间赋值和递增值,java,increment,primitive,Java,Increment,Primitive,有人能解释一下为什么这样的调用不会增加我的i值吗 int i = 0; list.get(7 + (i = i++)); list.get(7 + (i = i++)); 它保留i=0而不是增量1,至少在第二次调用中是1。i=i++首先赋值,然后再增量 以下是执行的基本情况: list.get(7 + (i = i)); //list.get(7); i = i + 1; //i = 1 list.get(7 + (i = i); //list.get(8); i = i + 1; //i =
i
值吗
int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));
它保留
i=0
而不是增量1,至少在第二次调用中是1。i=i++
首先赋值,然后再增量
以下是执行的基本情况:
list.get(7 + (i = i)); //list.get(7);
i = i + 1; //i = 1
list.get(7 + (i = i); //list.get(8);
i = i + 1; //i = 2
++i
将首先递增变量,然后分配第二个i=i++
类似于:
int old_i = i;
i = i + 1;
i = old_i;
实际发生的情况是,i++
的值是i
在增量发生之前的值,然后i
将得到<代码>i
在一行中,
i++
将使用i
的旧值,然后将其递增。i=i++
意味着i
将被分配i
的旧值,然后递增1。如果你想真正增加你的价值,你应该写下:
int i = 0;
list.get(7 + (i++));
list.get(7 + (i++));
或:
i=i++
没有任何意义,因为i++
确实编辑i
value您实际想要写的是list.get(7+i++)
“++i将首先递增变量,然后赋值”所以为什么对于i=(++i)编译器会给我一个警告:“赋值给变量i没有效果”?因为它没有效果。这是一种冗余,因为在后缀递增(++i)期间,我被分配递增的值。您只需要list.get(7+(+++i));
int i = 0;
list.get(7 + (i+1));
list.get(7 + (i+2));