文章目录
流程控制结构
- 程序控制结构是指以某种顺序执行的一系列动作,用于解决某个问题。程序可以通过控制语句来对程序实现选择、循环、转向和返回等流程控制。
- 程序控制结构包括:顺序结构、分支结构、循环结构。
顺序结构
顺序结构程序就是按语句出现的先后顺序执行的程序结构。计算机按顺序逐条执行语句,当一条语句执行完毕,自动转到下一条语句。
示例:
int a = 11; // 第一步
int b = 2; // 第二步
int c = a + b; // 第三步
System.out.println("a+b的结果为:" + c); // 第四步
分支结构
- 分支结构又称为选择结构。当程序执行到控制分支语句时,首先判断条件,根据条件表达式的值选择相应的语句执行(放弃另一部分语句的执行)。
- 分支结构包括单分支、双分支和多分支三种形式。
单分支
【语法格式】
如果每个分支下都只有一条语句的话,{} 可以省略
If( boolean表达式 ){
真语句;
}If( boolean表达式 ){
真语句;
}else{
假语句;
}
说明:当语句块为一条语句时,大括号可以省略。只有布尔表达式为true时,才进入if语句中。
【示例】
int age = 20;
if (age >= 18) {
System.out.println("成年人");
}
双分支
【语法格式】
if(布尔表达式){
语句块;//if分支
}else{
语句块;//else分支
}
【示例】
int age = 20;
if(age >= 18){
System.out.println("成年人");
}else{
System.out.println("未成年人");
}
多分支-if-else if-else
【语法格式】
if(布尔表达式){
语句块;
}else if(布尔表达式){
语句块;
}else{
语句块;
}
【示例】
int age = 20;
if(age >0 && age <=18){
System.out.println("未成年");
}else if(age > 18 && age <=40) {
System.out.println("青年");
}else if(age > 40&& age<=50) {
System.out.println("中年");
}else if(age > 50) {
System.out.println("老年");
}else{
System.out.println("见鬼了");
}
多分支-switch
【语法格式】
switch (表达式) {
case 值1:
语句;
break;
case 值2:
语句;
break;
default:
语句;
break;
}
1.7以前 只能传入 int值
1.7开始 可以传入字符串
可以传入int 也就意味着 可以传入 byte short char,因为 自动类型转换
注意 分支需要有break;否则会有 case穿透现象
- 表达式的值只能为:char、byte、short、int类型、String、enum类型,其它类型均非法
- default语句也可以省略,一般不建议省略,并且放置在最后
int i_1 = 10;
switch (i_1) {
case 1:
i_1 += 1;
case 2:
i_1 += 2;
// 这里符合条件,由于没有 break 所以开始穿透, -直到碰到break或者执行完为止
case 10:
i_1 += 10;
case 11:
i_1 += 11;
System.out.println("---");
case 12:
i_1 = 1;
break;
default:
i_1 = 0;
}
Case合并
// case合并
char c_2 = 'A';
// 相当于||位或
// 如果是ABC就执行相同的操作
switch (c_2) {
case 'A':
case 'B':
case 'D':
System.out.println("xxx");
break;
case 'C':
System.out.println("xx");
break;
}
循环结构
- 当程序执行到循环控制语句时,根据循环判定条件对一组语句重复执行多次。
- 循环结构的三个要素:循环变量、循环体和循环终止条件。
- while、do…while、for三种循环。
while语句
while被称为真假循环
【语法格式】
While( boolean表达式 ){
循环体;
}
执行 0~N次
【示例】
int i = 1;
while(i<=5) {
System.out.println(i);
i++;
}
do…while语句
do{
循环体;
}while( boolean表达式);
执行 1~N次
先执行,再判断,能够保证代码执行一次
【示例】
int i = 1;
do{
System.out.println(i);
i++;
}while(i<=0); //注意分号
For
- 单循环
For循环 称为计数循环
循环 : 重复做某件事/代码 - 循环三要素 :
初始值,终止条件,步长 - 语法结构 :
for( 初始值; 终止条件; 步长 ){
循环体; //一条或多条语句
}
- 执行 :
先执行初始值,并且只执行一次 , 然后执行终止条件进行判断
如果 返回值为false 就终止循环
如果 返回值为true 就执行 循环体
循环体执行完之后,执行步长 , 然后执行终止条件进行判断
如果 返回值为false 就终止循环
如果 返回值为true 就执行 循环体
然后再次执行步长,终止条件进行判断…
一直到 终止条件 返回值为false 终止
//可以什么都不写但是两个分号必须要有
//死循环,执行不完
for(;;){
System. out.println(1);
注意 一定要有 初始值 终止条件 步长 否则会导致死循环
// 初始值i只能在循环体内使用
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
// 报错用不了
// System.out.println();
嵌套循环
- 就是在循环体中 还有一个循环
可以利用嵌套循环 模拟表
外层循环 可以理解为行
内层循环 可以理解为列 - 外层循环执行一次,内层循环执行一圈
因为外层循环要把循环体执行完之后 才会去执行 i++步长
但是循环体内 还有一个循环,那么外层循环体想要执行完,必须先把内层循环执行完才可以
内层循环没有终止,外层循环的循环体 不算执行完
break语句
强制退出某个循环体,结束循环语句的执行
- 用于switch语句中,结束分支语句,避免case穿透现象
- 也可以用在循环中,结束循环,但是只能结束距离最近的循环
如果发生嵌套循环,需要使用outerFor来终止外层循环
//break可以终止到break后边标号的位置 ,outerFor可以是任意的标号
outerFor: for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if(j==3) {
break outerFor;
}
System.out.println(j+" ");
}
//换行
System.out.println();
}
continue语句
终止某次循环过程,跳过continue语下方未执行的代码,开始下一步循环过程
for (int i = 0; i <10 ; i++) {
if(i==5) {
//break;
//终止最近层
//跳过当前循环,继续下次,直接执行i++
continue;
}
System.out.println(i);
}