我已经浏览了本论坛中与此主题相对应的所有问题,我觉得提出一个不同的问题,因为这个问题没有得到明确回答。这是我的场景: 我有这个类Test1:
public class Test1 {
public static void main(String args[]) {
int i=0, j=2;
do {
i= i+1;
j--;
} while(j>0);
System.out.println(i);
}
}
现在这是我的问题: a)如果我用++ i替换'i = i + 1'的递增操作,我得到所需的输出为
1
2
但如果我用i ++替换'i = i + 1'的增量操作,我得到所需的输出为
0
0
我确实理解在for循环中使用前缀和后缀运算符的区别,但为什么在do-while循环中该值根本没有增加?
答案 0 :(得分:5)
使用i = i++;
永远不会更改i
值。
仅使用:
i++;
为什么呢?这是因为:
i = i++;
类似于这样做:
temp = i; // temp is 0.
i = i+1; // increment i
i = temp; // assign temp (which is 0) to i.
答案 1 :(得分:2)
++i
这将增加i
,然后返回它。
i++
这将返回i
,然后递增它。
示例强>
Here是指向这个例子的链接。
int i = 5;
System.out.println(i++);
// Outputs 5
int j = 5;
System.out.println(++j);
// Outputs 6.
答案 2 :(得分:1)
x = i++;
是x = i; i = i + 1;
x = ++i;
是i = i + 1; x = i;
就是这样。
答案 3 :(得分:0)
实际上,在您的示例中,i++
和++i
之间应该没有区别,如果您将i = i+1
替换为两个中的一个。克里斯正确地注意到了这一点,我只想添加一个样本,这很重要:
int i = 0;
method(i++);
使用method
的原始值调用0
并在后面增加i
。但是,在method
中,您会看到原始值0
。
int i = 0;
method(++i);
将增加i
,然后调用method
。因此,在method
中,您将获得1
的值。这不会改变method
之后i
在两种情况下都具有值1
的事实。
其他人已正确指出
i = ++i;
和
i = i++;
实际上是不同的东西!