📜  ++i 与 i++ java (1)

📅  最后修改于: 2023-12-03 14:59:00.541000             🧑  作者: Mango

Java中的++i与i++

在Java中,++i和i++都是用来自增1的操作符,但它们的区别在于它们的作用时间不同。

++i

++i是一个前缀自增1的操作符,它会在表达式求值之前将变量i的值自增1。举个例子:

int i = 0;
int j = ++i;
System.out.println("i is " + i); // i is 1
System.out.println("j is " + j); // j is 1

在这个例子中,变量i被自增1之后,变成了1。那么当赋值操作执行时,j的值就是1。可以看到,++i操作符会先自增1,然后再使用变量的值。

i++

i++是一个后缀自增1的操作符,它会在表达式求值之后才将变量i的值自增1。举个例子:

int i = 0;
int j = i++;
System.out.println("i is " + i); // i is 1
System.out.println("j is " + j); // j is 0

在这个例子中,变量i的值被赋给j之后,i才被自增1。所以i的值变成了1,但j的值还是0。可以看到,i++操作符会先使用变量的值,然后再自增1。

总结
  • ++i是前缀自增1的操作符,它会在表达式求值之前将变量i的值自增1。
  • i++是后缀自增1的操作符,它会在表达式求值之后将变量i的值自增1。
  • 这两个操作符在单独的语句中的效果是相同的,但在表达式中的效果就不同了。
推荐用法

在实际开发中,两个操作符的使用没有绝对的优劣之分,可以根据具体情况选择。但在for循环中,使用++i会比i++更高效。因为++i会直接修改变量的值,而i++需要先将变量的值保存到一个临时变量中。举个例子:

for (int i = 0; i < array.length; ++i) {
    // do something
}

如果使用i++,那么循环中的每次操作都要多一次复制操作,会稍微降低一点性能。

参考资料