for循环:
控制一段代码反复执行很多次
举个例子:
比如:你去淘宝搜索手机,是不是会显示上千上万部手机?那么不可能说一条一条去写这样的代码吧?肯定不会这么干,所以,就有了循环结构这个东西,将一段代码反复执行很多次。
格式:
for (初始化语句; 循环条件; 迭代语句) {
循环体语句(重复执行的代码);
}
示例:
// 输出3次HelloWorld
for (int i = 0; i < 3; i++) {
System.out.println("Hello World");
}
for的执行流程:
例:
for (int i = 1; i <=5; i+=2) {
System.out.println("hello,world");
}
/*流程解析:
i 第一次循环,因为i=1,所以符合i<=5,为true,继续循环
i 第二次循环,因为i=1,此时i+=2等价于i=i+2; 结果为3,所以i=3,符合i<=5,为true,继续循环
i 第三次循环,因为i=3,此时i+=2等价于i=i+2; 结果为5,所以i=5,符合i<=5,为true,继续循环
i 第四次循环,因为i=5,此时i+=2等价于i=i+2; 结果为7,所以i=7,不符合i<=5,为false,结束循环
for循环案例:求和
需求:求1——5之间的数据和,并把求和结果再控制台输出。
//需求:求1-5之间的和,并把求和结果在控制台输出。
int sum =0; //定义变量sum,初始值为0,用作存放求和结果。
for (int i=1;i<=5;i++){ //将1-5之间的数字累加起来求和
sum+=i; //等价于sum=sum+i
}
System.out.println("总和:"+sum);
首先进入for循环:
i 的第一次循环,i=1,符合i<5,sum += i 等价于 sum = sum + i 等价于 sum = 0 + 1,所以将 1 重新赋值给变量sum,继续循环;
i 的第二次循环,i=1+1 = 2,符合i<=5,sum += i 等价于 sum = 1 + 2,所以将 3 重新赋值给变量sum,继续循环;
i 的第三次循环,i=2+1 = 3,符合i<=5,sum += i 等价于 sum = 3 + 3,所以将 6 重新赋值给变量sum,继续循环;
i 的第四次循环,i=3+1 = 4,符合i<=5,sum += i 等价于 sum = 6 + 4,所以将 10 重新赋值给变量sum,继续循环;
i 的第五次循环,i=4+1 = 5,符合i<=5,sum += i 等价于 sum = 10 + 5,所以将 15 重新赋值给变量sum,继续循环;
i 的第六次循环,i=5+1 = 6,不符合i<=5,判断为false,结束循环。
目前 sum 的值已经累加到了 15,所以此时 sum=15;
所以最后在控制台输出sum的值就为15
for循环案例:求奇数和
需求:求1——10的奇数和,并把求和的结果在控制台输出。
//需求:求1~10之间的奇数和,并把求和结果在控制台输出
int sum =0;
for (int i=1;i<=10;i++){
if (i%2==1){
sum+=i;
}
}
System.out.println("1~10之间的奇数和为"+sum);
i 的第一次循环,i=1,符合i <= 10,然后进行if判断:1 % 2 是 余 1,所以i=1是奇数,
则sum+=i等价于sum = sum + i 等价于 sum = 0 + 1,因此将1重新赋值给sum,继续循环
i 的第二次循环,i=1+1 = 2,符合i <= 10,if判断:2 % 2 是 余 0,所以i=2不是奇数,
则sum的值不进行累加,继续循环
i 的第三次循环,i=2+1 = 3,符合i <= 10,if判断:3 % 2 是 余 1,所以i=3是奇数,
则sum+=i等价于sum = 1 + 3,因此将4重新赋值给sum,继续循环
i 的第四次循环,i=3+1 = 4,符合i <= 10,if判断:4 % 2 是 余 0,所以i=4不是奇数,
则sum的值不进行累加,继续循环
i 的第五次循环,i=4+1 = 5,符合i <= 10,if判断:5 % 2 是 余 1,所以i=5是奇数,
则sum+=i等价于sum = 4 + 5,因此将9重新赋值给sum,继续循环
i 的第六次循环,i=5+1 = 6,符合i <= 10,if判断:6 % 2 是 余 0,所以i=6不是奇数,
则sum的值不进行累加,继续循环
i 的第七次循环,i=6+1 = 7,符合i <= 10,if判断:7 % 2 是 余 1,所以i=7是奇数,
则sum+=i等价于sum = 9 + 7,因此将16重新赋值给sum,继续循环
i 的第八次循环,i=7+1 = 8,符合i <= 10,if判断:8 % 2 是 余 0,所以i=8不是奇数,
则sum的值不进行累加,继续循环
i 的第九次循环,i=8+1 = 9,符合i <= 10,if判断:9 % 2 是 余 1,所以i=9是奇数,
则sum+=i等价于sum = 16 + 9,因此将25重新赋值给sum,继续循环
i 的第十次循环,i=9+1 = 10,符合i <= 10,if判断:10 % 2 是 余 0,所以i=10不是奇数,
则sum的值不进行累加,继续循环
i 的第十一次循环,i=10+1 = 11,不符合i <= 10,判断:false,结束循环
因此sum的值最终累加到25,最终在控制台输出的1~10奇数和是25
方法2
int sum = 0;
for (int i = 1; i <=10; i+=2) {
sum+=i;
}
System.out.println("奇数和为"+sum);
进入for循环:
i 的第一次循环,i=1,符合 i <= 10,sum2+=i 等价于 sum2 = sum2 + i 等价于 sum2 = 0 + 1,
则将1重新赋值给sum2
i 的第二次循环,i=1+2 = 3,符合i<=10,sum2+=i 等价于 sum2 = 1 + 3,
则将4重新赋值给sum2
i 的第三次循环,i=3+2 = 5,符合i<=10,sum2+=i 等价于 sum2 = 4 + 5,
则将9重新赋值给sum2
i 的第四次循环,i=5+2 = 7,符合i<=10,sum2+=i 等价于 sum2 = 9 + 7,
则将16重新赋值给sum2
i 的第五次循环,i=7+2 = 9,符合i<=10,sum2+=i 等价于 sum2 = 16 + 9,
则将25重新赋值给sum2
i 的第六次循环,i=9+2 = 11,不符合i<=10,判断为false,结束循环。
因此最终sum2的值累加到25,最终控制台输出的1~10奇数和是25