一、顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。注意,定义成员变量必须先定义再使用。
二、分支结构
一、单分支结构
if(条件表达式){
执行代码块;(可以有多条语句)
}
当条件表达式为true时则执行{}内的执行代码块,否则不执行。若{}中只有一条语句可以省略{},但建议写上。
二、双分支结构
if(条件表达式){
执行代码块1;
}
else{
执行代码块2;
}
三、多分支结构
if(条件表达式1){
执行代码块1;
}
else if(条件表达式2){
执行代码块2;
}
......
else{
执行代码块n;
}
特别说明:(1)多分支可以没有else,如果前面的所有条件表达式都不成立,则一个执行入口都没有(2)若有else,前面都不成立则执行else
注意:if()内的判断条件若为赋值语句,则以赋值语句的结果来判断。即如if(b = false),则不执行,因为结果是false。注意区别赋值= 和 判断相等==
四、switch分支结构
switch(表达式){
case 常量1 :
语句块1;
break;
case 常量2 :
语句块2;
break;
......
case 常量n :
语句块n;
break;
default :
default语句块;
break;
}
1、注释:
- switch关键字表示switch分支
- 表达式对应一个值,只要有值返回就算一个表达式,因此里面也可以是一个变量。若其为字符,则要用单引号' '括起来。
- case 常量1: 若表达式的值等于常量1,则执行语句块1
- break:表示退出switch
- 按照顺序由上至下依次匹配case并执行对应语句块,若一个都没匹配上,则执行default语句块。
- 穿透:若某个case的语句块后没有跟break,则程序会顺序执行下一个case的语句块,直到遇上break或者进入default语句块。因此,switch结构必须配合break语句进行跳出分支。但有时候,我们会利用穿透的特性来达成多种情况同种输出的效果。
- 执行完default后会默认自动退出,故default语句块后的break可加可不加。
2、细节讨论
- 表达式的数据类型应该和case后的常量类型保持一致,或是可以自动转成可以相互比较的类型,例如char和int
- 表达式的返回值必须是byte、short、int、char、enum、String中的一种
-
case子句中的值必须是常量或常量表达式而不能是变量
-
default子句是可选的,当没有匹配的case时执行default
3、if和switch的比较
- 若判断具体的数值,且数量不多,而且类型符合上述六种,建议用switch
- 对于其他情况,例如区间判断或对boolean类型判断,则用if,其适用范围更广。
三、循环结构
一、for循环控制
一、基本语法
for(循环变量初始化; 循环条件; 循环变量迭代){
...;
}
二、注意事项
- 循环条件是返回一个布尔值的表达式
- for(;循环条件;)中初始化和变量迭代可以写到其他地方,但两边的分号不能省略。若初始化写在for循环体内,则该变量只能在for循环内使用;而若将其写在for循环之外,则作用域变广了。
- 循环初始化可以有多条初始化语句,但要求类型一样,且中间必须用逗号隔开。
- 变量迭代同样可以有多条,且中间必须用逗号隔开。如for(int i = 0,j = 0; i < count; i++, j += 2)
二、while循环控制
一、基本语法
循环变量初始化;
while(循环条件){
循环体(语句);
循环变量迭代;
}
二、注意事项
- 循环条件是返回一个布尔值的表达式
- while循环时先判断再执行语句
三、dowhile循环控制
一、基本语法
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
二、注意事项
- dowhile是关键字
- 先执行,再判断,至少执行一次
- 注意while结束后有分号
四、循环控制语句
1、break
1、需求:循环次数不知道,但满足某种条件时退出循环,则可以利用break语句。
2、基本介绍:用于终止某个语句块的执行,一般用在switch或循环中。会跳出当前语句块/循环。
3、使用细节:break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的时哪一层语句块。
标签的基本使用:
label1:{...
label2: {...
label3: {...
break label2;
...
}
}
}
break语句可以指定退出哪层。
label则是标签,名字由程序员指定
如果没有指定label,则默认退出最近一层循环体(即上面例子中默认break label3)。但实际开发中尽量不要使用标签。
标签也可以写成别的东西,只要满足标识符的命名规则即可。
如:abs:
2、continue
用于结束本次循环,继续执行下一次循环。同样可以用标签指明要跳出的循环是哪一层。
3、return
使用在方法中表示跳出所在的方法。使用在main方法中会退出程序。