一、语法
for (语句1; 语句2; 语句3) {
循环体
}
语句 1:在循环体开始前执行。
语句 2:定义运行循环体的条件。
语句 3:在循环体已被执行之后执行(这就是循环中的 ++i 和 i++ 结果一样的原因,但是性能不一样)
1️⃣语句 1:可选,也就是说不使用也可以。
int[] arr = new int[]{1, 2, 3};
int m = 0, len = arr.length;
for (; m < len; m++) {
System.out.println(arr[m]);
}
也可以在语句 1 中初始化任意(或者多个)值:
int[] arr = new int[]{1, 2, 3};
for (int m = 0, len = arr.length; m < len; m++) {
System.out.println(arr[m]);
}
2️⃣语句 2:可选,通常语句 2 用于评估初始变量的条件。如果语句 2 返回 true,则循环再次开始,如果返回 false,则循环将结束。如果省略了语句 2,那么必须在循环内提供 break,否则循环就无法停下来。
3️⃣语句 3:可选,通常语句 3 会增加初始变量的值。有多种用法。增量可以是负数(i--),或者更大(i=i+15)。语句 3 也可以省略(比如当循环内部有相应的代码时):
int[] arr = new int[]{1, 2, 3};
int m = 0, len = arr.length;
for (; m < len; ) {
System.out.println(arr[m]);
m++;
}
二、++i 和 i++ 的区别++在前先自加后运算;++在后先运算后自加
int i = 10;
System.out.println(i++); //10 ,先引用原值,然后加1
等价于:
int m = 10;
System.out.println(m); //先输出m
i++; //然后加1
int n = 10;
System.out.println(++n); //11,这次是先加1,然后输出
三、for 循环中 ++i 和 i++ 的区别
根据上面的 for 循环的语法定义 ++i 和 i++ 的结果是一样的,都要等循环体执行完毕才能执行语句 3,但是性能是不同的。在大量数据的时候 ++i 的性能要比 i++ 的性能好,原因:i++ 由于是在使用当前值之后再 +1,所以需要一个临时的变量来转存。而 ++i 则是在直接 +1,省去了对内存的操作的环节,相对而言能够提高性能。