最近做for循环的题频繁出错!静下心来好好研究一下这个,吃透他!
首先是为啥要有循环?
这个简单理解,我要重复的执行一件事情,不使用循环就得频繁的写同样的东西,既麻烦也不美观,这也就是循环的好处了!
然后是for循环的语法,也就是使用
语法如下:
for (初始化; 条件表达式; 更新表达式) {
// 循环体
}
初始化
最先执行的步骤
在循环开始前执行一次,用于设置循环控制变量的初始值,比如int index= 0;
可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
也就意味着这种
for (int index = 1;index<=10;index++){
System.out.println("输出语句");
}
这种
for (int index = 1,num = 2;index<=10;index++){
System.out.println("输出语句");
}
哪怕是这种
for (;;){
System.out.println("输出语句");
}
都是没有问题的,但是最后这种就会无限制的循环下去
条件表达式,也就是判断语句
上一步的初始化结束之后,走条件表达式,检测布尔表达式的值
如果为真,则执行循环体;如果为假,则退出循环,执行循环之后的语句
更新表达式
在每次循环结束后执行 ,用于更新循环控制变量的值,比如index++;
循环体
就是要循环的语句或者方法
执行顺序
for (int index = 1;index<=10;index++){
System.out.println("输出语句");
}
拿这个举例,执行顺序可以看成下面这个样子
- 初始化,执行int index = 1;
- 判断1<=10是否为真,真走循环体,假跳出循环,走之后的语句
- 这里为真走循环体
- 然后再走更新表达式index++;
- 然后走判断表达式
循环这个过程,直到表达式判断为假,跳出循环
... ... ...
实践出真知,拿一道题来举例
int count = 0;
for(int i = 1;i<=10;i++){
if(i==5){
continue;
}
for (int j = 1;j<=10;j++){
if(j==5){
break;
}
count++;
}
}
System.out.println(count);
首先要明确两个语句的概念
- continue语句:跳过当前的循环,执行之后的循环
- break语句:跳出当前的循环
所以外层的循环在i = 1,2,3,4,6,7,8,9,10时都会往下走,共循环9次
内层的循环在j=5时就会跳出这个循环,所以j = 1,2,3,4,共循环4次
在嵌套循环中,外层循环走一次,内层循环走全部次数 ,所以4*9=36,count的值为36!
9.7补充
今天看菜鸟教程看到 增强for循环语法 ,主要用于数组上,语法格式如下:
for(声明语句 : 表达式)
{
//代码句子
}
- 声明语句 :声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
- 表达式 :表达式是要访问的数组名,或者是返回值为数组的方法。
这个也非常好理解,正常情况下我们用for循环打印数组每一项的值代码如下:
int[] number = {1,2,3,4,5,6};
for(int index = 0;index<number.length;index++){
System.out.print(number[index]+" ");
}
而这个所谓的增强型语法,如下:
int[] number = {1,2,3,4,5,6};
for (int x:number){
System.out.print(x+" ");
}