如果想处理二选一或者多选一的操作,那么判断就是很好的选择,如果想处理重复的工作时,“ 循环”就是一个很好的选择,它可以运行相同的程序片段,还可以使程序结构化。
一般来说程序的结构有顺序结构、选择结构和循环结构3种,这3种不同的结构有一个共同点,就是它们都只有一个入口,也只有一个出口。这些单一入、出口可以让程序易读、好维护,也可以减少调试的时间。下面以流程图的方式让读者了解这3种结构的不同。
1.顺序结构
顺序结构,程序至上而下逐行执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾。其流程图如图所示:
2.选择结构
其是根据条件的成立与否决定要执行哪些语句的一种结构,其流程图如图所示:
if语句
生活中很多事情都是在满足一定条件下发生的,同样程序中的“某操作语句”也是在满足一定逻辑条件下才执行的,这种语句称作条件语句,或称为“if 语句”。使用 if 关键字,该“某操作语句”称为“if 体”或“条件语句体”。
if 语句的执行流程:首先判断关键词 if 后括号内条件表达式的值,如果该表达式的值为逻辑真(非 0),则执行 if 体,接着执行 if 体后的其他语句;否则,若该表达式的值为逻辑假(0),则不执行该 if 体,直接执行 if 体后的其他语句。
if 分支结构通常用在:在数据有默认值或事件有默认操作的前提下,对特殊情况进行特殊处理的场景。
if语句的执行流程图如下:
if-else语句
if-else 语句的执行流程:首先判断关键词if后括号内条件表达式的值,如果该表达式的值为逻辑真(非 0),则执行 if 体(语句 A),而不执行 else 体(语句 B),然后继续执行 if-else 之后的其他语句;否则,若该表达式的值为逻辑假(0),则不执行该 if 体(语句 A),而执行 else 体(语句 B),然后继续执行 if-else 之后的其他语句。
由于表达式的值在逻辑上只有真和假,故 if 和 else 在执行流程上是互斥的,执行且只能执行两者中的一个。
[if-else语句的格式]
if (判断条件) {
语句主体1;
}else {
语句主体2;
}
有一种运算符可以代替if…else语句,即三目运算符:
使用三目运算符时,操作数有3个,其格式如下:
变量 = 条件判断? 表达式1: 表达式2
将上面的格式以if语句解释,就是当条件成立时执行表达式1,否则执行表达式2,通常会将这两个表达式之一的运算结果指定给某个变量,也就相当于下面的if…else 语句:
if (条件判断)
变量x = 表达式1;
else
变量x = 表达式2;
例:使用三目运算符求出两个数字中的最大值
public class MaxDemo {
public static void main (String[] args) {
int max = 0; //定义变量保存最大值
int x = 3; //定义整型变量x
int y = 10; //定义整型变量y
max = x>y ? x : y; //通过三目运算符求最大值
System.out.println("最大值为: " + max); // 输出求出的最大值
程序运行结果:
最大值为:10
可以发现,使用条件运算符编写程序时较为简洁,它用一个语句就可以替代一长串的if-else语句,所以条件运算符的执行速度也较高。
if-else 语句的执行流程图如下:
if…else if…else语句
如果需要在if…else中判断多个条件时,就需要if…else if…else语句了,其格式如下:
if (条件判断1) {
语句主体1;
}else if (条件判断2) {
语句主体2;
}
//...多个else if ()语句
else{
语句主体3;
}
例:使用if...else if...else语句
public class MoreIfElseDemo {
public static void main(String[] args) {
int x=3; //定义整型变量x
if(x==1) {
//判断x的值是否为1
System.out.println("x的值是1! "); //输出信息
}else if(x==2){
//判断x的值是否为2
System.out.println("x的值是2! "); //输出信息
}else if(x==3){
//判断x的值是否为3
System.out.println("x的值是3! ") ;//输出信息
}else {
//其他值
System.out.println("x的值不是1、2、3中的一个! ");
程序运行结果:
x的值是3!
4.switch case语句
switch语句可以将多选一的情况简化,使程序简洁易懂。case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。使用switch语句直接处理多个分支(当然包括两个分支)。其一般形式为:
switch (表达式) {
case选择值1: 语句主体1;
break;
case选择值2: 语句主体2;
break;
......
case选择值n: 语句主体n;
break;
default : 语句主体;
break;
}
//要特别注意的是,在switch语句中选择值只能是字符或常量。
switch语句的执行流程是: 首先计算switch后面表达式的值,然后用此值依次与各个case的常量表达式比较,若表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句,然后退出switch语句,程序流程转向开关语句的下一个语句。
例:
public class SwitchDemo{
public static void main(String[] args) {
int x=3; //声明整型变量x
int y=6; //声明整型变量y
char oper = '+' ; //声明字符变量
switch (oper) {
//将字符作为switch的判断条件
case '+': {
<