一、while语句:
在程序中,需要重复性的做某件事;
1.1.1 while:
public class Test{ public static void main(String[] args){ // 求1-5所有整数的和 // 0+1+2+3+4+5 int i = 1; //变量初始化 int sum = 0; while(i <= 5//控制循环条件){ sum = sum + i;//循环操作 i++;//循环条件变化 } System.out.println("sum = " + sum); } }
1.1.2 while与 if 的结合使用:
public class Test15{ public static void main(String[] args){ // 求1-10所有偶数的和 int j = 1; int sum = 0; while(j <= 10){ // 业务逻辑:求偶数的和 if(j % 2 == 0){ sum += j; } j++; } System.out.println("sum = " +sum); } }
1.1.3 while的嵌套循环:
外层循环执行一次,内层循环支持n次;
双层循环解决了需要进行循环嵌套的问题 => 二维结构 => 表格结构;
外层循环控制行,内层循环控制列;
public class Test01{ public static void main(String[] args){ int i = 1; while(i<=3){ int j = 1; while(j <= 4){ System.out.print("* "); j++; } System.out.println(); i++; } } }
1.2 do···while:
public class Test{ public static void main(String[] args){ int sum = 0; int i = 1;//变量初始化 do{ if(i % 2 == 0){ sum += i;//循环操作 } i++;//循环控制变化 }while(i<=10//循环控制条件); System.out.println(""+sum); } }
while 与 do···while 的区别:
do…while循环先执行,后判断;while先判断,后执行。dowhile至少执行一次。
2.1 for 循环:
2.1.1普通 for 循环:
public class Test{ public static void main(String[] args){ //(变量初始化;循环控制条件;循环控制变化) for(int i=0;i<=10;i++){ System.out.println(i);//循环操作 } } }
2.1.2 双层for循环:
for(int i=1;i<=3;i++){ for(int j=1;j<=4;j++){ System.out.print("* "); } System.out.println(); }
2.1.3 复杂的for循环:
int num = 10; for(int i=0,j=num;i<=num;i++,j--){ System.out.println(i+"+"+j+"="+(i+j)); }
2.1.4 特殊的for循环:
public class Test13{ public static void main(String[] args){ // [1]表达式1在for循环外声明 /* int sum = 0; int i = 1; for(;i<=10;i++){ sum += i; } System.out.println("i="+i); System.out.println("sum = " + sum); */ // [2]省略表达式2 ==> 死循环 /* int sum = 0; for(int i = 1;;i++){ sum += i; System.out.println("sum="+sum); } */ // System.out.println("sum = " + sum); // [3]省略表达式3 => 可能导致死循环 /* int sum = 0; for(int i = 1;i<=10;){ sum += i; System.out.println("sum="+sum); i++; } */ int sum =0; int i = 1; for(;i<=10;){ sum += i; System.out.println("sum="+sum); i++; } } }
//死循环 for(;;){ }
总结:while和for
[1]while和for可以相互替换;
[2]如果明确知道循环次数,一定要for;如果不知道循环次数,优先使用while;