循环语句
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环
1.for语句
格式:
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
-
执行初始化表达式语句
-
执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环 -
执行循环体语句;
-
执行控制条件语句
-
回到B继续。
例1:九九乘法表
package com.baidu.demo;
public class ForDemo{
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.print("\n");
}
}
}
结果为:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
例2:计算水仙花数
package com.baidu.demo;
public class ForDemo {
public static void main(String[] args) {
int count=0; //定义一个统计变量
for(int i=100;i<=999;i++){
int ge=i%10;
int shi=i/10%10;
int bai=i/100%10;
int flowerNumber=ge*ge*ge+shi*shi*shi+bai*bai*bai;
if(i==flowerNumber){
System.out.println("水仙花数是: "+i);
count++;
}
}
System.out.println("水仙花数有"+count+"个");
}
}
注意事项:
- 判断条件语句无论简单还是复杂结果是boolean类型。
- 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。括号一般不省略
- 一般来说:有左大括号就没有分号,有分号就没有左大括号
2.while语句
格式:
基本格式:
while(判断条件语句) {
循环体语句;
}
完整格式:
初始化条件语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
执行流程:
- 执行初始化条件语句;
- 执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环 - 执行循环体语句;
- 执行控制条件语句;
- 回到b继续。
例1:计算1-50的和
package com.baidu.demo;
public class WhileDemo {
public static void main(String[] args) {
//求1---50之间的和
int j=1;
int sum=0;
while (j<=100){
sum+=j;
j++;
}
System.out.println("和是: "+sum);
}
}
结果为:1275
3. do…while语句
格式:
do {
循环体语句;
}while(判断条件语句);
完整格式;
初始化条件语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
- 执行初始化条件语句;
- 执行循环体语句;
- 执行控制条件语句;
- 执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环 - 回到b继续。
package com.baidu.demo;
public class DoWhileDemo {
public static void main(String[] args) {
//先执行do里面的代码一次,然后再去判断,while括号里面的条件是否成立,如果成立,就继续执行{}里面的语句
//如果条件不成立,则循环结束
int i=5;
do{
System.out.println("hello");
i--;
}while (i>2);
}
}
结果为:
hello
hello
hello
三种语句的区别
- do…while循环至少执行一次循环体。而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
- 如果要在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不确定用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。
- 建议优先考虑for循环,然后是while循环 ,最后是do…while循环。