四、循环语句
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要通过修改循环变量使得循环判断条件为false,从而结束循环,否则循环将一直执行下去,形成死循环。
for循环语句
for(声明一个变量(初始化语句);(循环条件语句)条件表达式;(迭代语句)变量自增或自减){
循环体语句;
(1)for(;;)中的两个;是不能多也不能少
(2)循环条件必须是boolean类型比较运算符就是boolean类型
}
执行语句的顺序!!!!!!!!
第一步:初始化语句;
第二步:循环条件语句;
第三步:循环体语句;
第四步:迭代语句;
第五步:循环条件语句
第六步:循环体语句;
第七步:迭代语句;
第八步:循环条件语句;
第九步:循环体语句
第十步:迭代语句;
第十一步:循环条件语句;
第十二步:循环体语句;
第十三步:迭代语句;
第十四步:循环条件语句:终于满足当前的false了,
第十五步:迭代语句i++;!!!!!!;
第十六步:跳出循环,结束循环,循环不再执行了;
第十七步:i最终结果
// 输出1-5
for(int i=1;i<=5;i++){
System.out.println(i);
}
// 输出5-1
for(int i = 5; i>=1;i--){
System.out.println(i);
}
//
int num = 5;
for(int i=1;i<=num;i++){
int currentIndex=(num+1)-i;
System.out.println(currentIndex);
}
// 输出3的倍数和有3的数
for(int i=1;i<=100;i++){
int indexnum=100-i;
if(indexnum%3==0||indexnum%10==3||indexnum/10%10==3){
continue;
}else{
System.out.println(indexnum);
}
}
}
变量的作用域
for循环语句外的地方,找不到,只能在for循环里面才能找到的变量
代码
// --------------------
int i;
for (i = 0; i < 3; i++) {
System.out.println(i);
}
System.out.println("最后一个数"+i);
死循环
死循环恐怖之处在于它可以把你的电脑CPU给你肝废,一旦循环中的代码量过多就会肝废你的电脑;所以循环中一定要有一个能够结束循环的条件语句,写完代码要先捋一遍循环看是否条件能够结束循环,再开始执行代码!!!!!
for(;;){
死循环
}
注意:
(1)如果两个;之间写true的话,就表示循环条件成立
(2)如果两个;之间的循环条件省略的话,就默认为循环条件成立
(3)如果循环变量的值不修改,那么循环条件就会永远成立
//爱你到永远
for(;;){
System.out.println("爱你");
}
for(;true;){
System.out.println("我爱你");
}
for(int i = 0;i<10;){
System.out.println("我爱你");
}
for (int i=1; i>=10; ){ //?? 一次都不执行
System.out.println("我爱你!");
}
break关键字
使用场景:终止switch或者当前循环
-
在选择结构switch语句中
-
在循环语句中
-
离开使用场景的存在是没有意义的
whlie循环
while(循环语句1){
循环语句2;
}
注意:
while(循环条件)中循环条件必须是boolean类型
执行顺序
第一步:执行循环条件语句1,判断true还是false
第二步:执行循环体语句2;
第三步:循环条件语句1;
第四步:循环体语句;
第五步:循环体条件为true;
第六步:结束循环;
while(i<5){
System.out.println("你好");
i++;
}
int count = 0;
while (true){
System.out.println("你好啊");
if(count==5){
break;
}
count++;
死循环
while(true){
System.out.print("无限");
}
注意:
(1)while(true):常量true表示循环条件永远成立
(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立
(3)while()中的循环条件不能空着
面试题:
==和equals区别
==
基本数据类型:比较的是值是否相同
引用数据类型:比较的是地址值是否相同
equals
引用类型:默认情况下,比较的是地址值。
特:String、Integer、Date 这些类库中 equals 被重写,比较的是内容而不是地址!
==:比较的是两个字符串内存地址(堆内存)的数值是否相等,属于数值比较;
equals():比较的是两个字符串的内容,属于内容比较。
补充随机数使用:Math.random
do-while循环
do{
循环体语句;
}while(表达式);
-
第一步:执行循环体语句①;
-
第二步:执行循环条件语句②,看循环条件语句的值是true,还是false;
-
如果是true,执行第三步;
-
如果是false,循环语句终止,循环不再执行。
-
-
第三步:循环条件语句执行完后,重新从第一步开始再执行一遍
1、do...while循环至少执行一次循环体
(1)while(true):常量true表示循环条件永远成立
(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立
(3)while()中的循环条件不能空着
循环语句的区别
-
如何选择
-
遍历有明显的循环次数(范围)的需求,选择for循环
-
遍历没有明显的循环次数(范围)的需求,循环while循环
-
如果循环体语句块至少执行一次,可以考虑使用do...while循环
-
本质上:三种循环之间完全可以互相转换,都能实现循环的功能
-
-
三种循环结构都具有四要素:
-
(1)循环变量的初始化表达式
-
(2)循环条件
-
(3)循环变量的修改的迭代表达式
-
(4)循环体语句块
-
从循环次数角度分析
-
do...while循环至少执行一次循环体语句
-
for和while循环先循环条件语句是否成立,然后决定是否执行循环体,至少执行零次循环体语句
循环嵌套
是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。当然可以是三种循环任意互相嵌套。
for(初始化语句①; 循环条件语句②; 迭代语句⑦) {
for(初始化语句③; 循环条件语句④; 迭代语句⑥) {
循环体语句⑤;
}
}
执行特点:外循环执行一次,内循环执行一轮。
关键字:continue
使用场景:提前结束本次循环,继续下一次的循环