java 分支,循环语句
1.顺序结构
按照原码的编写顺序,从上往下逐句执行
2.分支结构
2.1判断结构
俗称"if语句"
2.1.1 表现形式1: if结构
//语法
if(条件表达式){
执行体
}
先判断条件表达式结果,如果为true,则运行执行体代码;如果为false,则不运行执行体代码
demo
int a = 10;
if(a >= 10){
System.out.println("if条件满足,执行体中代码被执行");
}
//在if结构之外的语句,不受条件表达式控制
System.out.println("if结构之外的代码");
//当执行体只有一条语句时,if结构的大括号可省略
//当if结构没有大括号时,条件表达式能且只能控制其最后的第一条语句
if(a == 10)
System.out.println("a == 10 满足");
System.out.println("语句2");
实际开发中,几十只有一条语句,习惯上也把大括号写上
2.1.2 表现形式2 if-else 结构
//语法
if(条件表达式){
执行体1
}else{
执行体2
}
判断条件表达式结果,如果为true,则运行执行体1;如果为false,则运行执行体2
根据条件在两种操作之间做选择
int a = 10;
if(a == 10){
System.out.println("a == 10");
}else{
System.out.println("a != 10");
}
当执行体只有一条语句时,大括号可以省略;习惯上还是把大括号写上
if-else与三目运算符
根据条件在类型相同的具体值中做选择,用三木运算符
如果根据条件是在复杂操作(或不同类型的值)之间做选择,用if-else
2.1.3 表现形式3 if - else if 结构
//语法
if(条件表达式1){
执行体1
}else if(条件表达式2){
执行体2
}else if(条件表达式3){
执行体3
}...
先判断条件表达式,如果为true,则运行执行体1;如果为false,在判断表达式2,如果为true,则执行执行体2;如果为false,继续判断后面的条件表达式…直到某个条件表达式为true,运行相应的执行体;…
如果所有的条件表达式结果都为false, 则不会有执行体被运行当某一个分支满足并执行之后, 整个语法结构结束, 即使后面还有能满足的条件, 也不会再判断执行
int a = 10;
if(a < 10){
System.out.println("a < 10");
}else if(a == 10){
System.out.println("a == 10");
}else if(a > 10){
System.out.println("a > 10");
}
2.1.4 if - else if -else
if(条件表达式1){
执行体1
} else if(条件表达式2){
执行体2
}...
else{
执行体n
}
按照从上向下的顺序逐个判断条件表达式, 当某个条件表达式满足时, 执行相应的执行体; 如果所有的条件表达式都不满足, 则运行执行体n
int a = 10;
if (a < 10){
System.out.println("a < 10");
} else if (a == 10){
System.out.println("a == 10");
} else if (a > 10){
System.out.println("a > 10");
}else {
System.out.println("所有条件都没满足");
}
2.2 选择结构
switch 语句,switch-case结构
// 语法
switch(结果表达式){
case 值1:
执行体1;
break;
case 值2:
执行体2;
break;
case 值3:
执行体3;
break;
...
default:
执行体n;
break;
}
用结果表达式的结果, 与各case列出的值进行等值比较
遇到匹配的分支, 运行相应分支下的执行体
如果所有的case值都不匹配, 则运行default分支下的执行体
Scannersc = newScanner(System.in);
System.out.println("请输入一个整数值");
int a = sc.nextInt();
switch (a) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 0:
System.out.println("星期日");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入有误");
break;
}
特点:
- 在进行等值匹配时,匹配顺序与声明顺序无关
- 如果某个case分支中没有 break 关键字,当该分支执行完成之后,会继续向下执行下一个case分支,知道遇到 break 关键字,或者整个结构运行结束
- 各个case的执行顺序与声明顺序有关
- 最后一个声明分支的 break 关键字可省略(最后一个分支没有 break 对整个结构的运行没有影响)\
- default 分支是可省略的,当没有default分支,且各个case都不匹配时,就没有操作可执行
switch结构支持的数据类型: byte, short, int, char(JDK1.5之后还支持字符串), enum
3.循环结构
3.1 while循环
//语法
while(条件表达式){
循环体
}
条件表达式结果类型必须是boolean
当条件表达式为true时, 执行循环体; 循环体执行完再执行条件表达式, 决定是否进行一轮执行
直到条件表达式结果为false(或循环体中遇到break关键字), 循环结束
int a = 0;
while (a < 10) {
System.out.println(a); // 0, 1, 2, 3, 4, 5, 6,7,8, 9
a++;
}
int a = 0;
while (a < 10){
System.out.println(a); // 0, 1, 2, 3, 4, 5, 6,7,8, 9
a++;
if (a == 7){
break;
}
}
3.2 do-while 循环
do{
循环体
}while(条件表达式);
先执行循环体, 再判断条件表达式, 决定是否继续执行
do-while的循环体至少会执行一次
如果循环体只有一条语句, while和do-while的大括号可以省略, 习惯上还是写上
// 即使循环条件不满足, 循环体也会被执行一次
int a = 0;
do{
System.out.println(a);
a++;
if(a == 7){
break;
}
}while(a > 10);
while与do-while的区别
- while:先判断后执行
- do-while:先执行在判断
3.3 for循环
// 语法
for( 初始表达式 ; 条件表达式 ; 操作表达式 ){
循环体
}
执行顺序:
a.初始表达式;
b.条件表达式;
- 如果条件表达式为 true 则执行 c
- 如果条件表达式为false则循环结束
c.操作表达式,执行完操作表达式之后回到 b
- 初始表达式在整个语法结构中, 只执行一次
- 条件表达式结果必须是boolean类型
- 当条件表达式为false(或在循环体中执行到了break)语法结构结束
- 在初始表达式中声明的变量, 其作用域只在for循环语法结构中生效, 循环结束, 变量失效
for(int a = 0; a < 10; a++){
System.out.println(a);
if(a == 7){
break;
}
}
- for循环中的各部分可以为空, 当条件表达式为空时表示永恒为true
- for循环中的各部分可以根据实际需求写相关的表达式
循环结构中的 break 与 continue
- break :结束整个语法结构
- continue :跳过当前循环,进入下一次循环
不论是break还是continue, 其后的语句都是无法被执行到的