Java中for循环的i++和++i区别

本文详细解析了Java中i++和++i的使用区别及其在循环中的性能表现,通过实验数据展示了两者在不同循环次数下的执行时间差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们应该都知道i++和++i的区别是:

++i是先执行 i = i +1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i = i + 1;

for循环的执行顺序如下:

for(a;b;c){
  d;
}

进入循环执行a;只是进入的时候执行

执行b; //条件为真才执行d,不然跳出for了

执行d;

执行c;

再回到第2步开始执行

来看下面的实例:

forint i = 0; i < 10;i++{
  System.out.println(i);
}

相当于:

for(int i = 0; i < 10;){
  System.out.println(i); 
  i++; 
}

2.

forint i = 0; i<10; ++i){
  System.out.println(i);
}

相当于:

forint i =0; i < 10;{
  System.out.println(i);
  ++i;
}

在循环体中,i++和++i的作用是一样的。
打印出来的信息是:

0

1

2

3

4

5

6

7

8

9

打印信息证明了i++和++i的作用是一样的

但是肯定有一定区别的,所以把循环耗时也打印出来了。

循环次数 = 100的时候:

i++的时间是:5
++i的时间是:3

循环次数 = 1000的时候:

i++的时间是:25
++i的时间是:21

循环次数 = 10000的时候:

i++的时间是:179
++i的时间是:130

没错,就是运行时间的差别。
在Java中i++语句是需要一个临时变量取存储返回自增前的值,而++i不需要。这样就导致使用i++时系统需要先申请一段内存空间,然后将值塞如进去,最后不用了才去释放。多了这么一系列操作时间。

大家可以仔细咀嚼一下我们开头的这句话:++i是先执行 i = i +1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i = i + 1;

### Java 中 `i++` `++i` 的区别及用法 在 Java 编程语言中,存在两种不同形式的增量运算符:前缀 (`++i`) 后缀 (`i++`)。这两种操作符虽然都用于增加变量的值,但在具体行为上有所差异。 #### 后缀增量运算符 `i++` 当使用后缀增量运算符时,在表达式的当前上下文中返回的是未更新之前的原始值;而该语句执行完毕之后才会使目标变量加一。这意味着如果在一个循环条件判断里应用此操作,则测试阶段采用旧数值参与比较逻辑计算[^1]。 ```java int i = 0; System.out.println(i++); // 输出 0 // 此处 i 已经变为 1 ``` #### 前缀增量运算符 `++i` 相比之下,前缀版本会在任何进一步处理之前立即修改并获取最新的值。因此对于同样的场景下,它会先让指定对象自增再继续后续流程中的其他部分工作,所以在控制结构如for循环内作为终止条件的一部分时尤为有用。 ```java int j = 0; System.out.println(++j); // 输出 1 // 这里的 j 是 1 ``` #### 在循环中的实际运用案例 为了更直观地展示两者之间的差别,下面通过具体的例子来说明如何在不同的编程环境中选用合适的形式: ##### 使用后缀增量的情况 ```java public class PostfixExample { public static void main(String[] args) { for(int k=0; k<5; System.out.print(k++ + " ")) ; // 输出: 0 1 2 3 4 } } ``` 在这个实例里面,由于每次迭代结束才去改变计数器k的状态,所以打印出来的序列是从零开始直到四为止的一系列整数。 ##### 应用前缀增量的情形 ```java public class PrefixExample { public static void main(String[] args) { for(int m=-1; ++m<5; ) System.out.print(m + " "); // 输出: 0 1 2 3 4 } } ``` 这里展示了另一种方式实现相同的输出效果——利用前置递增特性使得初始状态被调整到满足进入主体范围内的第一个合法位置(-1变成0),从而达到预期目的。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值