选择结构概念:
根据已知条件进行逻辑判断,满足条件后执行响应 *** 作;
1、基本if选择结构- 语法:
if(布尔表达式) { // 代码块:表达式为真时执行 }
- 执行流程:
- 对布尔表达式进行判断
- 结果为true,则先执行代码块,再执行后续代码;
举个例子:
public class TestBaisclf{ public static void main(String[] args){ double score = 100.0; if(score == 100.0){ System.out.println("恭喜,满分!!!"); } System.out.println("程序结束"); } }
打开cmd完成编译以及运行,如下图:
2、if else选择结构-
语法:
if(布尔表达式){ // 代码块1 }else{ // 代码块2 }
-
执行流程:
- 对布尔表达式进行判断
- 结果为true,则先执行代码块1,再退出整个结果,执行后续代码;
- 结果为false,则先执行 代码块2,再退出整个结构,执行后续代码;
-
举个例子:
public class TestElse{ public static void main(String[] args){ double score = 99.0; if(score == 100.0){ System.out.println("恭喜,满分"); }else{ System.out.println("抱歉,罚抄"); } System.out.println("程序结束...."); } }
打开cmd完成编译以及运行,如下图:
-
语法:
// 当前的条件为false为假时会继续往下走 if(布尔表达式1){ // 代码块1 }else if(布尔表达式2){ // 代码块2 }else if(布尔表达式3){ // 代码块3 }else{ // 代码块4 }
-
执行流程:
- 表达式1为true,则执行代码块1,再退出整个结构;
- 表达式2为true,则执行代码块2,再退出整个结构;
- 表达式3为true,则执行代码块3,再退出整个结构;
- 以上均为false,则执行代码块4,再退出整个结构;
- 注意:相互排斥,有一个为true,其他均不再执行,适用于区间判断;
-
举个例子:
public class TestMultipleIf{ public static void main(String[] args){ int money = 110; // 单位:万 if(money > 100){ System.out.println("奔驰S级"); }else if(money > 50){ System.out.println("宝马5系"); }else if(money > 10){ System.out.println("奥迪A4L"); }else{ System.out.println("捷安特自行车"); } System.out.println("程序结束..."); } }
打开cmd完成编译以及运行,如下图:
-
语法:
if(外层表达式){ if(内层表达式){ // 内层代码块1 }else{ // 内层代码块2 } }else{ // 外层代码块 }
-
执行流程:
- 当外层条件满足时,再判断内层条件
-
注意:
- 一个选择结构中,可嵌套另一个选择结构
- 嵌套格式正确的情况下,支持任意组合
-
举个例子:
public class TestNestedIf{ public static void main(String[] args){ int timer = 11; char sex = '男'; if(timer <= 10){ // 进入总决赛 if(sex == '男'){ System.out.println("男子组决赛"); }else{ System.out.println("女子组决赛"); } }else{ System.out.println("淘汰"); } } }
打开cmd完成编译以及运行,如下图:
-
语法:
switch(变量 | 表达式){ case 值1: 逻辑代码1; case 值2: 逻辑代码2; case 值n: 逻辑代码n; default: 未满足时的逻辑代码; }
-
可判断的类型(不再判断布尔类型)
byte、short、int、char、String(JDK7+)
-
执行流程:
- 如果变量中的值等于值1,则执行逻辑代码1;
- 如果变量中的值等于值2,则执行逻辑代码2;
- 如果变量中的值等于值n,则执行逻辑代码n;
- 如果变量中的值没有匹配的case值时,执行default中的逻辑代码;
-
注意:
- 当匹配的case执行后,不会自动退出整个结构,而是继续向下执行;
- case…、或者default没有顺序可言的,输出结果都是一样的(比如:将default作为第一个值)
-
break 关键字
- 可在匹配的case执行后,跳出整个结构
-
适用于等值判断;
-
例子1:
public class TestSwitch{ public static void main(String[] args){ int weekDay = 4; switch(weekDay){ // 根据weekDay的值,找到匹配的case,并执行逻辑代码 case 1: System.out.println("湘菜"); case 2: System.out.println("川菜"); case 3: System.out.println("粤菜"); case 4: System.out.println("浙菜"); case 5: System.out.println("川菜"); case 6: System.out.println("川菜"); case 7: System.out.println("徽菜"); } System.out.println("程序结束..."); } }
打开cmd完成编译以及运行,如下图:
-
例子2:
public class TestSwitch{ public static void main(String[] args){ int weekDay = 4; switch(weekDay){ // 根据weekDay的值,找到匹配的case,并执行逻辑代码 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 7: System.out.println("徽菜"); break; } System.out.println("程序结束..."); } }
打开cmd完成编译以及运行,如下图:
-
例子3:
向下贯穿特性,可将输出结果一致的放在一起使用;
public class TestSwitch{ public static void main(String[] args){ int weekDay = 4; switch(weekDay){ // 根据weekDay的值,找到匹配的case,并执行逻辑代码 case 1: System.out.println("湘菜"); break; case 3: System.out.println("粤菜"); break; case 4: System.out.println("浙菜"); break; case 2: case 5: case 6: System.out.println("川菜"); break; case 7: System.out.println("徽菜"); break; } System.out.println("程序结束..."); } }
打开cmd完成编译以及运行,如下图:
-
例子4:
public class TestSwitch{ public static void main(String[] args){ int weekDay = 8; switch(weekDay){ // 根据weekDay的值,找到匹配的case,并执行逻辑代码 case 1: System.out.println("湘菜"); break; case 3: System.out.println("粤菜"); break; case 4: System.out.println("浙菜"); break; case 2: case 5: case 6: System.out.println("川菜"); break; case 7: System.out.println("徽菜"); break; //case 8: // System.out.println("请输入1~7之间的整数!"); // 如果输入的值是以上以外的值则无法做出判断,此时可使用default default: System.out.println("请输入1~7之间的整数!"); } System.out.println("程序结束..."); } }
打开cmd完成编译以及运行,如下图:
-
例子5:
public class TestSwitch{ public static void main(String[] args){ int weekDay = 8; switch(weekDay){ // 根据weekDay的值,找到匹配的case,并执行逻辑代码 default: System.out.println("请输入1~7之间的整数!"); break; case 1: System.out.println("湘菜"); break; case 3: System.out.println("粤菜"); break; case 4: System.out.println("浙菜"); break; case 2: case 5: case 6: System.out.println("川菜"); break; case 7: System.out.println("徽菜"); break; //case 8: // System.out.println("请输入1~7之间的整数!"); // 如果输入的值是以上以外的值则无法做出判断,此时可使用default // case...、或者default没有顺序可言的,输出结果都是一样的(比如:将default作为第一个值) //default: // System.out.println("请输入1~7之间的整数!"); } System.out.println("程序结束..."); } }
打开cmd完成编译以及运行,如下图:
-
概念
声明再方法内部的变量,必须先赋值再使用;
-
作用范围:
定义行开始到所在的代码结束;
-
注意
- 多个变量,在重合的作用范围内,不可出现重名(命名冲突)
-
举个例子:
public class TestLocalVariable{ public static void main(String[] args){ int a = 10; // 局部变量的声明(包含在主方法中),必须先赋值再使用(变量a的作用范围:主方法内) System.out.prinln(a); if(1 == 1){ int b = 20; // 局部变量,超出作用范围之后,会立即回收(变量b的作用范围:if选择结构内) System.out.prinln(a); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)