基本if选择结构
语法:
if(布尔表达式){
代码块//当表达式结果为true,则执行该代码块
}
后续代码...
执行流程:
对布尔表达式进行判断。
结果为true,则先执行代码块,再执行后续代码。
结果为false,则跳过代码块,直接执行后续代码。
public class TestBasicIf{
public static void main(String[]args){
double score = 98.0;
//判断成绩是否满分
if (score == 100.0){ //当score中的值等于100时,则执行if代码块中的内容
System.out.println("恭喜,满分");
}
System.out.println("程序结束...");
}
}
if else选择结构
执行流程:
对布尔表达式进行判断。
结果为true,则先执行代码块1,再退出整个结构,执行后续代码。
结果为false,则先执行代码块2,再退出整个结构,执行后续代码。
public class TestBasicIfElse{
public static void main(String[]args){
double score = 98.0;
if (score == 100.0){
System.out.println("奖励一部手机");//代码块1
}else{
System.out.println("罚抄试卷10遍");//代码块2
}
System.out.println("程序结束");
}
}
多重if选择结构
语法:
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 TestMultiIf{
public static void main(String[]args){
//购车
//根据自己的购买力(钱),钱多就买贵一些的,钱少就买便宜点的
int money = 100;//万元
/*
如果有500万,买劳斯莱斯
否则,如果有100万,买GTR
否则,如果有50万,买奔驰E
否则,如果有20万,大众帕萨特
否则,如果有10万,哈佛H6
否则,如果有5万,奇瑞QQ
否则,捷安特自行车
*/
if(money >= 500){
System.out.println("劳斯莱斯");
}else if(money >= 100){
System.out.println("GTR");//满足条件,跳出结构,继续执行下面的内容
}else if(money >= 50){
System.out.println("奔驰E");
}else if(money >= 20){
System.out.println("大众帕萨特");
}else if(money >=10){
System.out.println("哈佛H6");
}else if(money >=5){
System.out.println("奇瑞QQ");
}else{
System.out.println("捷安特自行车");
}
System.out.println("程序结束");
}
}
嵌套if选择结构
语法:
if(外层布尔表达式){
if(内层布尔表达式){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块
}
public class TestNestIf{
public static void main(String[]args){
//百米赛跑,用时低于10秒,则进入总决赛
double timer = 10.0;
char sex = '男';
if(timer <= 10.0){
//可以进入总决赛
if( sex == '男'){
System.out.println("进入男子组");
}else
System.out.println("进入女子组");
}else{
System.out.println("抱歉,淘汰");
}
}
}
执行流程:
当外层条件满足时,再判断内层条件。
注意:
一个选择结构中,可嵌套另一个选择结构。
嵌套格式正确的情况下,支持任意组合(if、if else、多重if),嵌套结构中可能存在因没有缩进而导致的书写串行,进而执行出现问题。
分支结构
语法:
switch(变量 | 表达式){
case 值1:
逻辑代码1;
break;
case 值2:
逻辑代码2;
break;
case 值n:
逻辑代码n;
break;
default:
为满足时的逻辑代码;
}
可判断的类型:byte、short、int、char、String(JDK7+)
执行流程:
如果变量中的值等于1,则执行逻辑代码1。
如果变量中的值等于2,则执行逻辑代码2。
如果变量中的值等于n,则执行逻辑代码n。
如果变量中的值没有匹配的case值时;执行default中的逻辑代码。
注意:所有case的取值不可相同。
当匹配的case被执行后,并不会自动退出整个结构,而是继续向下执行。
break关键字可以在匹配的case执行后,直接跳出整个结构。
public class TestSwitch{
public static void main(String[]arge){
//判断一周食谱,每天吃什么
/*
周一:水煮鱼 周二:麻辣烫 周三:火锅
周四:煲仔饭 周五:火锅 周六:火锅 周日:热干面
*/
int weekday = 3;
switch(weekday){
case 1:
System.out.println("水煮鱼");
break;
case 2:
System.out.println("麻辣烫");
break;
case 3:
case 5:
case 6:
System.out.println("火锅");
break;
case 4:
System.out.println("煲仔饭");
break;
case 7:
System.out.println("热干面");
break;
default:
System.out.println("输入有误,请输入1~7之间的数字");
}
System.out.println("程序结束");
System.out.println("-----------------");
char c = 'A';
switch(c){
case 'A':
System.out.println("您输入的是A");
break;
case 'B':
System.out.println("您输入的是B");
break;
}
String str = "星期一";
switch(str){
case "星期一":
System.out.println("今天吃水煮鱼");
break;
}
}
}
局部变量
概念:声明在函数内部的变量,必须先赋值再使用。
作用范围:定义开始到所在的代码块结束。
注意:多个变量,在重合的作用范围内,不可出现重名(命名冲突)。