目录
一、概述
任何简单或复杂的算法都可以由顺序结构、分支结构和循环结构这三种基本结构组合而成。
它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。
- 顺序结构:是一种基本的控制结构,它按照语句出现的顺序执行操作
- 分支结构:又被称为选择结构,根据条件成立与否来执行操作,
- 循环结构:是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
二、分支结构
在JAVA中分支结构 分为:
- if语句
- switch语句
if语句
if 条件结构:是根据 条件判断 之后再做处理
有单分支、双分支、多分支之分!
if语句格式有以下几种:
- if(条件语句){…}
- if (条件语句){…}else{…}
- if (条件语句){…}else if(条件语句){…}
- if (条件语句){…}else if(条件语句){…}else{…}
switch语句
switch语句格式为:
switch(表达式){
case 取值 1:
语句块 1;
break;
case 取值 n:
语句块 n;
break;
default:
语句块 n+1;
break;
}
switch 语句有关规则 :
- 表达式的返回值必须是下述几种类型之一:int, byte, char, short,String (还有枚举);
- case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
- default 子句是可选的;
- break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;
- 如果 case 后面没有写 break 则直接往下面执行!
- Case 后面的执行体可写{ }也可以不写{ }
case “1”:
case “2”:
case “3”:
syso(“你好”)
break;//表示 1 、 2 、3,都输出“你好” 时,可以这样简写 ;不同条件 相同输出,可以利用 不选取 “break”,代码还会直接往下面执行的特性
三、 循环结构
循环语句功能:在循环条件满足的情况下,反复执行特定代码
循环语句分类 :
- for 循环
- while 循环
- do/while 循环
for 循环
语法:
for(初始化参数;判断条件 ;更新循环变量){
循环体;
}下面举两个有意思的例子:
- //相当于 死循环
for ( ; ;){
循环体;
}
- //先打印 1后面 循环 打印 2、3
for ( syso(1) ; true ; syso(2) ) {
syso(3);
}
while 循环
- 符合条件,循环继续执行;否则,循环退出
- 特点:先判断,再执行
- 语法结构为:
while(条件表达式){
//语句块;
}
do-while 循环
- 先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
- 特点:先执行,再判断
- 语法结构:
do {
循环操作
}while ( 条件表达式 );
while 循环和 do-while 循环的区别?
- while:先判断条件,如果条件满足,再执行循环操作
- do while:先执行一遍循环操作,然后再判读条件,如果条件满足,继续执行循环操作
四、break && continue
break与continue语句:
- break:是用于终止本轮所有次循环。
结束该循环 即不执行本次循环中break后面的语句, 直接结束本轮循环。
- continue:是用于终止本轮本次循环。
结束该循环中 某一次 循环 即本次循环中continue后面的代码不执行, 进行下一次循环的入口判断
package task; public class Test { public static void main(String[] args) { for (int i=0; i<3; i++) { for (int j=0 ; j<4; j++) { if (j == 2){ break; } System.out.print(j+"\t"); } System.out.println(); } } }
结果为:
可以看到 打印了 3 次 “0 1”,这是因为:
- 第一层for循环 循环了三次,所以打印了3次 “0 1”
- 而每一次的第一层循环体中,执行了第二层for循环,在循环两次后(即满足if条件), break了,结束了!!!本轮!!!第二层的循环;
- 但程序没有直接结束,而是进行下一次的第一层for循环!!
如果 把上面代码中 的 “break”改成 “continue”,会输出什么呢?
结果为:
可以看到打印了 3次 “0 1 3” ;这是因为
- 第一层for循环 循环了三次,所以打印了3次 “0 1 3”
- 而每一次的第一层循环体中,执行了第二层for循环 的 每一次循环都打印 j;但在满足if条件时,couture了,结束了!!!本次!!!循环,就不执行打印语句,直接进入 这第二层循环的下一次 循环。
- 但程序没有直接结束,而是进行下一次的第一层for循环!!
可以看到 本轮 与 本次 这两个字样,
你可以这样理解 :
for (int i = 0; i<10; i++){.
System.out.println(“你好”);
}
本轮 for循环, 循环10次,打印"你好"
五、结束多重循环
package task; public class Test { public static void main(String[] args) { aa : for (int i=0; i<3; i++) { // !!!关注点!! for (int j=0 ; j<4; j++) { if (j == 2){ break aa; // !!!关注点!! } System.out.print(j+"\t"); } System.out.println(); } } }
结果为:
可以看到,这个代码的嵌套循环,跟上面的代码 几乎无异,
- 只不过是在第一次for循环里,为其定义了一个 “aa”名字,
- 然后break语句里,加入了“aa”,
其效果为:当执行到 break语句时,直接结束掉 名为aa 的for循环
如过 仅有 break; 那只能 结束掉 第二层循坏,程序重新回到 第一层循环体,接着循环