上结论:
- 作为独立语句时,两者没有区别
- 在赋值表达式中,i++返回原值,++i返回新值
- 在复杂表达式中的计算顺序不同
- 在循环中的使用(虽然结果相同)
- 通过Counter类模拟了两种递增操作的内部实现原理
有错误欢迎批评指正。
这是展示++i(前缀递增)和i++(后缀递增)区别的示例代码:
- 作为独立语句时的区别
int a = 5; a++; // 等同于 ++a,都是直接加1 System.out.println("a = " + a); // 输出: a = 6
- 在表达式中的区别
int b = 5; int c = 5; int resultB = b++; // 先使用b的值(5),再将b加1 int resultC = ++c; // 先将c加1,再使用c的值(6) System.out.println("b = " + b + ", resultB = " + resultB); // 输出: b = 6, resultB = 5 System.out.println("c = " + c + ", resultC = " + resultC); // 输出: c = 6, resultC = 6
- 在复杂表达式中的区别
int i = 5; int j = 5; System.out.println(i++ + i++); // 输出: 5 + 6 = 11,i最终等于7 System.out.println(++j + ++j); // 输出: 6 + 7 = 13,j最终等于7
在循环中的区别
System.out.println("使用i++的循环:"); for(int x = 0; x < 3; x++) { System.out.println("当前x值: " + x); } System.out.println("使用++x的循环:"); for(int x = 0; x < 3; ++x) { System.out.println("当前x值: " + x); }
通过自定义类展示区别
Counter counter = new Counter(); System.out.println(counter.getAndIncrement()); // 输出当前值0,然后加1 System.out.println(counter.getValue()); // 输出1 System.out.println(counter.incrementAndGet()); // 先加1,再输出2 System.out.println(counter.getValue()); // 输出2 class Counter { private int value = 0; // 模拟i++ public int getAndIncrement() { int temp = value; value = value + 1; return temp; } // 模拟++i public int incrementAndGet() { value = value + 1; return value; } public int getValue() { return value; } }