一、控制结构
控制结构是控制程序如何运行的特殊的语句结构。
控制结构分为 顺序控制结构 分支控制结构 循环控制结构。
二、顺序控制结构
除了分支控制结构 和 循环控制结构之外的语句都是按照顺序控制结构运行的。即,语句由上到下,由左到右依次执行。
三、分支控制结构
1.if判断
i. if语句
if可以实现判断,通过判断的结构决定是否执行某段代码。
基本结构:
执行逻辑图:
ii. if..else..语句
基本结构:
执行逻辑图:
iii. if..else if..else语句
基本结构:
执行逻辑图:
2. switch..case..语句
i. switch..case..
根据输入项的值的不同,走不同分支代码。
输入项的值只能是byte/short/char/int,jdk7之后,支持String。
基本结构:
执行逻辑图:
case用来实现匹配,case是进入的位置,一旦匹配成功,则从当前case位置进入,执行之后的代码,之后的所有case和default也会被执行。
switch中也可以带一个default,则前面所有的case如果都匹配不成功,由default进行匹配。
如果不想之后的case和default执行,需要通过break跳出switch。
四、循环控制结构
1. while循环
i. while
语法结构:
1 while(判断条件){2 执行的内容3 改变条件的语句4 }
循环的三要素:判断的条件 执行的内容 改变条件语句
执行逻辑图:
2. do...while & while...do
语法结构:
执行逻辑图:
while 和 do..while的区别,在于while先判断后执行,while中的代码不一定能够执行到,但do..while是先执行后判断,无论如何,do中代码至少会执行一遍。do..while是可以用while替代的,但while不一定能被do..while替代.
2.for循环
i.for
判断条件 执行的代码 改变条件的语句
基本的语法结构:
执行逻辑图:
for循环相对于while循环,将循环要素提取到for的小括号中管理,使循环的代码结构更加清晰,便于开发维护。
while和for本质上等价的,但for结构更加清晰,通常代码也更少,是开发中最常用的循环方式。
for中的三个条件并不需要都存在,可以根据需要空置。
for(;;){} //等价于死循环
3.break continue
i. continue
继续当前循环
一旦循环中遇到continue,则本次循环continue之后的代码不再执行,回到循环开始位置继续下一次循环。
ii. break
跳出当前循环
一旦循环中遇到break,则从break位置开始跳出整个循环语句,之后的循环不再执行。
iii. break tag
在多层循环时,可以通过break tag 方式,指定在break时要跳出的是哪一层循环。
这种写法会造成程序的可阅读性大幅度降低,不推荐使用。
如果想要跳出多层许愿,需要一层一层break跳出。
案例:
1 importjava.util.Scanner;2 /**
3 continue break4 */
5 public classDemo05{6 public static voidmain(String args[]){7 //1.计算1-100的偶数和
8 /*
9 int sum = 0;10 for(int i=1;i<=100;i++){11 if(i%2==0){12 sum+=i;13 }else{14 continue;15 }16 System.out.println("当前的sum为"+sum);17 }18 */
19
20 //2.计算1-100的偶数和,如果和大于了500,则不再继续循环
21 /*
22 int sum = 0;23 for(int i=1;i<=100;i++){24 if(i % 2 == 0){25 sum += i;26 }else{27 continue;28 }29 if(sum > 500){30 break;31 }32 System.out.println(sum);33 }34 */
35
36 //3.break tag语法
37 /*
38 int x = 1;39 tag1:for(;x>0;){40 System.out.println("外层循环开始。。");41 for(int i = 0;i<10;i++){42 System.out.println(i);43 if(i == 5){44 break tag1;45 }46 }47 System.out.println("外层循环结束。。");48 }49 System.out.println("最外层..");50 */
51
52 //4.break tag的替代写法
53 boolean outBreak = false;54 for(;;){55 System.out.println("外层循环开始。。");56 for(int i = 0;i<10;i++){57 System.out.println(i);58 if(i == 5){59 outBreak = true;60 break;61 }62 }63 if(outBreak){64 break;65 }66 System.out.println("外层循环结束。。");67 }68 System.out.println("最外层..");69 }70 }