Java流程控制
流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
其流程控制方式采用结构化程序设计中规定的三种基本流程结构, 即:顺序结构、分支结构和循环结构,如下图所示:
顺序结构
顺序结构只能顺序执行,不能进行判断和选择。
Scanner类
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int num = sc.nextInt();
选择结构
Java有两种选择结构:
- if语句
- switch语句
if 语句
-
if 单分支选择结构
if 语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句。
-
if-else双分支选择结构
当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
-
If-else … if-else多分支选择结构
if(布尔表达式1) { 语句块1; } else if(布尔表达式2) { 语句块2; }……… else if(布尔表达式n){ 语句块n; } else { 语句块n+1; }
逐条 if 语句进行判断
- 条件匹配,进入语句体
- 否则对 if 语句继续匹配
-
嵌套 if 选择结构
if(条件1) { if(条件2) { 代码块1 } else { 代码块2 } } else { 代码块3 }
switch语句
根据表达式值的不同执行许多不同的操作
switch (表达式) {
case 值1 :
语句序列;
[break];
case 值2:
语句序列;
[break] ;
… … … … …
[default:
默认语句 ;]
}
1.switch语句会根据表达式的值从相匹配的执行, 一直执行到break标签处开始ak语句处或者是 switch语句的末尾。与任一case值不匹配,则进入 default语句(如果有的话)
2.只能处理等值条件判断的情况,且表达式必须为 byte,short,int或char类型 ,不能是String或 double,float.1.7之后可以使用string
3.常量值必须是与表达式类型兼容的特定的一个常量
4.不允许有重复的case值
5.default子句为可选
注意:
1、每个case模块中要添加break,防止多次匹配
2、如果多个case中处理的逻辑代码块的功能一致,可以考虑只在最后添加一次处理
3、default表示默认选项,当所有的case不匹配的时候,会执行此选项
4、defult可以有,也可以没有
switch和多重if选择结构比较
- 相同点:
都是用来处理多分支条件的结构 - 不同点
- switch选择结构
只能处理等值条件判断的情况,而且条件必须是整型 变量或字符型变量或者字符串(jdk1.7之后) - 多重if选择结构
没有switch选择结构的限制,特别适合某个变量处于 某个连续区间时的情况
- switch选择结构
小结
单分支结构:
只做单一条件的判断,如果符合,做某些事情
双分支结构:
当做条件判断的时候,只有两种选择
多分支结构:
可以进行多个条件的判断,每个匹配项可以选择不同的执行结果
嵌套分支结构:
在分支结构中嵌套分支结构
switch多分支结构:
一般用作等值判断
循环结构
while循环
在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对与于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
public class WhileTest {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i <= 100) {
sum += i; //sum = sum+i;
i++;
}
System.out.println("Sum= " + sum);
}
}
循环结构都由如下四个结构组成:
初始化、条件判断、循环体、迭代
do-while循环
- do-while:
先执行,后判断。 - while:
先判断,后执行。
int a = 0;
while(a<0){
System.out.println(a);
a++;
}
System.out.println(“-----”);
a=0;
do{
System.out.println(a);
a++;
} while (a<0);
While和dowhile的区别:
Do while总是保证循环体会被至少执行一次!这是他们的主要差别。
for循环
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
语法形式
for (初始表达式;布尔表达式;步进) {
循环体;
}
- 注意事项
- for循环在执行条件测试后,先执行程序部分,再执行步进。
- 在for语句的初始化部分声明的变量,其作用域为整个for循环体
- “初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作
- 如果三个部分都为空语句(分号不能省),相当于一个无限循环
小结
1、while
先进行判断,再进行逻辑执行
需要四部分组成:
初始化:变量的初始化
条件判断:必须要求返回true或者false的值
循环体:具体的要执行的逻辑代码
迭代变量:促使此循环结束
2、do while
先执行代码逻辑,再执行判断
3、 for
语法规则:
for(初始化1;条件表达式2;步进器4){
代码逻辑3
}
使用for循环的好处:
1、代码简洁
2、变量初始化的时候,for循环的作用域仅仅是当前for循环结构,
而while循环的作用域是从变量的定义开始到整个方法结束
跳转语句 break、continue、return
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句还可用于多支语句switch中)
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
break和continue对比:
使用场合:
break可用亍switch结构和循环结构中
continue只能用于循环结构中
作用(循环结构中):
break语句终止某个循环,程序跳转到循环块外的下一条语句。
continue跳出本次循环,进入下一次循环
return语句从当前方法退出,返回到调用该方法的语句处,并从该语句的下条语句处继续执行程序。
返回语句的两种格式:
1、return expression
返回一个值给调用该方法的语句。
返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据类型。
2、return
当方法声明中用void声明返回类型为空时,应使用这种返回类型,它不返回任何值。
小结
break:
switch语句
循环语句
跳出本层循环,当包含多层循环的时候,break只能跳出内层循环,无法跳出外层循环
continue:
循环语句
跳出本次循环
return有两基本用途
1、返回方法的返回值
2、终止当前程序
任何语句中,结束当前方法,和循环其实没什么关系