顺序结构
什么是顺序结构:一行一行的执行代码
选择结构 if
什么是选择结构:通过判断条件来做选择的语句,我们称为选择语句或分支语句
定义方式:if语句使用boolean表达式或boolean值作为选择条件,有三种结构形式:
选择结构 if
第一种结构:
if (boolean条件) { 代码/当boolean条件结果为true的时候,就执行这里的代码。}
注意:
(1)不能写出 if (boolean条件) ; { } (2)若 if 的语句只有一句话,其实可以省略{},即是如此,最好得写 {}. (3)对于boolean类型的表达式,不要使用 boolean表达式==true的写法。选择结构 if-else
第二种结构.
if (boolean条件) { 当boolean条件结果为true的时候,就执行这里的代码.}else { 当boolean条件结果为false的时候,就执行这里的代码.}
if-else结构和三元运算符的区别:
(1)一个是结构,一个运算表达式。
(2)运算表达式的是必须得有一个结果的。选择结构 if-elseif-else
第三种结构:
if (boolean条件1) { 当条件1为true的时候,执行这里.}else if (boolean条件2) { 当条件2为true的时候,执行这里}else if (boolean条件3) { 当条件3为true的时候,执行这里}else { 上述所有条件,都不满足,就执行这里.}
如果已经满足条件了,后面的判断就不会执行。
选择结构switch
定义:switch的语法结构(和if-elseif-else的语义相同)
switch (整型表达式) { case A值: 语句1; break; case B值: 语句2; break; case C值: 语句3; break; default: 上述所有的结果值都不满足 语句.}
注意点
switch的语法分析以及注意:
(1)switch中的表达式的结果/类型,必须是整数类型。
- 整数类型:byte、short、char、int。没有long。
- 从Java7开始,switch也支持String类型。语法糖,语法糖的背后,其有用的对待 string 类型时候,用的是hashCode() 方法转换的。
public static void main(String[] args) { String str = "fans"; switch (str) { case "fans": System.out.println("fans"); break; case "leiwen": System.out.println("leiwen"); break; default: System.out.println("default"); break; }}
反编译后:
public static void main(String args[]) { label0: { String str = "fans"; String s; switch ((s = str).hashCode()) { default: break; case -1106497712: if (!s.equals("leiwen")) break; System.out.println("leiwen"); break label0; case 3135424: if (s.equals("fans")) { System.out.println("fans"); break label0; } break; } System.out.println("default"); } }
(2)switch语句,一旦找到入口,就会进入,并执行功能语句,后面的case不再判断,除非语句break,return 或者执行完成,才会停下来。
(3)多个case 的不能相同。
(4)如果语句有多条语句,要用 { }。break 写在 { } 外面。
int week = 1;switch (week) {case 1: { System.out.println("星期1"); System.out.println("工作日");} break;default: System.out.println("其它"); break;}
(5)如果没有写break,就会执行当前条件后面的所有语句,直到遇到break 退出。
(6)default表示,当case中的值都不成立的时候,才执行,可以放在前面,但是要加上break,如果没有加,同样会继续往下执行。如果放在最后,可以省略break,所以一般的放在最后。
循环结构
循环 while
语法:
while (boolean表达式) { 若boolean表达式结果为true,则执行这里循环体}
注意:先判断boolean表达式。在执行循环体。
循环 do-while
语法:
do { 循环体} while (boolean表达式);
注意:
- do while,不管boolean表达式对与错,先执行一次循环体。
- 即使boolean表达式为false,do while也会执行一次。
- 推论:无论条件如何,dowhile至少会执行一次。
循环 for
语法:
for (初始化语句; boolean表达式; 循环之后的操作语句) { 循环体}
初始化语句:定义变量,赋初始值,只会执行一次;
boolean表达式:判断条件,若条件为true,则进入循环体,若为false,则跳过循环。 循环之后的操作语句:变量的自增/自减操作.执行顺序
(1)初始化语句.
(2)boolean表达式:- true:GOTO 3
- false:跳过循环,不执行循环体。
(3)执行循环体.
(4)循环之后的操作语句, GOTO 2.嵌套循环
什么时候要使用嵌套循环?
循环:当一个操作需要重复N次。
嵌套循环:当一个重复的操作,需要执行N次。结构
一个循环当中嵌套一个循环
注意事项
(1)使用循环嵌套时,内层循环和外层循环的循环控制变量不能相同。
(2)循环嵌套结构的书写,最好采用“右缩进”格式,以体现循环层次的关系。 (3)尽量避免太多和太深的循环嵌套结构。控制循环结构语句
break语句
结束当前所在的循环。
注意:break之后的语句,执行不到。若编写了,则语法报错。continue语句
表示跳过的这一次当前循环,继而进行下一次循环。
注意:contine之后的语句,执行不到。若编写了,则语法报错。return语句
表示结束循环所在的方法,方法都结束了,循环结构自然也就结束了。
控制外层循环
此时就得使用标签了,标签就是给某个循环起的别名,不过该别名得满足标识符的规范。
若要控制外层循环,就在break或continue后面跟上循环的别名就OK了public static void main(String[] args) { outter : for (int i = 0; i < 5; i++) { inner : for (int j = 0; j < i; j++) { if (i==3) { break outter; } } }}