为了控制程序的执行流程,Java 就提供了一些流程控制语句,我们先来举例说明一下:
顺序结构: 从上往下,依次执行
public class Test{ public static void main(String[] args) { int left = 10; int right = 20; int mid = (left + right) / 2; } }
选择结构:
QQ界面的登录,填写账号和密码正确,展示好友列表界面。填写账号或者密码有误,提示:你输入的账号或密码不正确。
这就是通过选择结构来实现的,实际开发中,类似这种逻辑判断的情况非常常见。
循环结构:
比如说,京东商城中,查询手机数据,京东就会返回给你一堆符合你查询要求的数据。
假如,每一部手机数据的展示需要5行代码,如果最终返回了1000部手机,你就需要编写5000行代码来实现数据展示。
这样就太麻烦了,那么,有没有一种流程语句,能够简化这种操作呢?答案肯定是有的,就是我们的循环结构,它就可以通过一个比较简单的结构来控制我们的手机展示1000次。
比如说,带着这样写就可以了,这就是循环结构。
2.1 顺序结构
顺序结构: 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行
执行流程图:
了解完顺序结构后,下面我们到IDEA中去演示一下:
/* 顺序结构语句 */ public class OrderDemo { public static void main(String[] args) { System.out.println("开始"); System.out.println("语句A"); System.out.println("语句B"); System.out.println("语句C"); System.out.println("结束"); } }
这个比较简单,也没什么好练习的。就不练了,我们继续往下学习。
2.2 选择语句之if
选择语句有两种结构:
- if 语句
- switch 语句
这里我们先来看 if 语句,它会根据判定的结果(真或假)决定执行某个分支的代码
举例说明一下:
无人驾驶的核心就是需要编写大量的判断逻辑,让车辆的行驶变得更加安全
了解了交通信号灯的基本逻辑后,下面呢,我们通过if语句来实现过马路的信号灯判断,而if语句呢,有三种格式,这里我们首先来看第一种格式
2.2.1 if语句格式1
格式:
if( 满足条件的表达式 ){ 语句; }
范例:
if( a > b ){ System.out.println("a > b"); }
执行流程:
代码示例
/* if语句格式1 */ public class IfDemo01 { public static void main(String[] args) { //定义一个变量,用来表示绿灯的状态 boolean isGreen = true; isGreen = false; if(isGreen) { System.out.println("绿灯行"); } } }
2.2.2 if语句格式2和格式3
刚才我们通过if语句格式1进行了判断,是绿灯的时候,可以通行,但是不是绿灯的时候,没有告诉我不可以通行啊。所以,这里就产生了if语句的第二种格式,先在代码中演示,再回去总结:
/* if语句格式2 */ public class IfDemo02 { public static void main(String[] args) { //定义一个变量,用来表示绿灯的状态 boolean isGreen = true; isGreen = false; if (isGreen) { System.out.println("绿灯行"); } else { System.out.println("不是绿灯,不允许行使"); } } }
演示完毕后,我们来说一下,if语句格式2:
格式:
if( 满足条件的表达式 ){ 语句A; }else{ 语句B; }
范例:
if( a > 10 ){ System.out.println("a大于10"); }else{ System.out.println("a小于等于10"); }
讲解完if语句格式2之后,我们到IDEA中再去看一段代码:
public class IfDemo03 { public static void main(String[] args) { //定义三个变量,表示交通信号灯的三种状态 boolean isRed = true; boolean isGreen = true; boolean isYellow = true; if (isRed) { System.out.println("红灯停"); } if (isGreen) { System.out.println("绿灯行"); } if (isYellow) { System.out.println("黄灯亮了等一等"); } } }
很明显,这是不合理的,因为我们把三种状态都设置为true了,而实际生活中,只会有一种状态为true,怎么解决呢多种情况的判断呢?这个时候就产生了if语句的第三种格式,先在代码中演示,再回去总结:
/* if语句格式3 */ public class IfDemo03 { public static void main(String[] args) { //定义三个变量,表示交通信号灯的三种状态 boolean isRed = true; boolean isGreen = true; boolean isYellow = true; //红灯 // isGreen = false; // isYellow = false; //绿灯 // isRed = false; // isYellow = false; //黄灯 // isRed = false; // isGreen = false; //出现了故障,信号灯都不亮了 isRed = false; isGreen = false; isYellow = false; if(isRed) { System.out.println("红灯停"); }else if(isGreen) { System.out.println("绿灯行"); }else if(isYellow) { System.out.println("黄灯亮了等一等"); } else { System.out.println("交通信号灯故障,请在保证安全的情况下通行"); } } }
演示完毕后,我们来说一下,if语句格式3:
if语句格式3:
格式:
if( ) { System.out.println("红灯停"); }else if(isGreen) { System.out.println("绿灯行"); } else { System.out.println("交通信号灯故障,请在保证安全的情况下通行"); }
2.2.4 关系运算符
Java中的关系运算符有如下几种:
了解了Java中的关系运算符之后,下面我们到IDEA中去使用一下:
/* 关系运算符 */ public class OperatorDemo01 { public static void main(String[] args) { //定义三个int类型的变量 int i = 10; int j = 20; int k = 10; //等于:== System.out.println(i == j);//false System.out.println(i == k);//true System.out.println("--------"); //不等于:!= System.out.println(i != j);//true System.out.println(i != k);//false System.out.println("--------"); //大于:> System.out.println(i > j);//false System.out.println(i > k);//false System.out.println("--------"); //大于等于:>= System.out.println(i >= j);//false System.out.println(i >= k);//true System.out.println("--------"); //千万不要把==写成了= System.out.println(i = j); //20 } }
最后,我们来总结一下,刚才在演示代码的时候有两个注意事项:
注意事项:
① 关系运算符的结果都是 boolean 类型, 要么是 true 要么是 false.
②
讲解完毕后,大家赶快动手练习一下吧。
2.2.5 案例2(奇偶数)
需求:给定一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
提示:偶数是能够被2整除的整数
首先,我们来简单的分析一下:
分析:
① 如何判断一个整数是奇数还是偶数?
整数对2进行取余,余数为0是偶数,否则为奇数
② 用if语句的哪种格式来实现该需求呢?
该整数要么是偶数,要么是奇数,2种情况,所以用if语句格式2
分析完毕后,我们来说一下实现步骤:
实现步骤:
① 定义一个int类型的整数
② 用if语句格式2进行判断
③ 根据是否是偶数给出不同的提示信息
知道了实现步骤,下面我们到IDEA中去实现一下:
/* 需求:给定一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数 */ public class IfTest02 { public static void main(String[] args) { //1:定义一个int类型的整数 int number = 10; number = 9; //2:用if语句格式2进行判断 //3:根据是否是偶数给出不同的提示信息 if (number % 2 == 0) { System.out.println(number + "是偶数"); } else { System.out.println(number + "是奇数"); } } }
讲解完毕后,大家赶快动手练习一下吧。
2.2.6 案例3(手机以旧换新)
需求:张三想买一台7988元的新手机,他的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新优惠,把他旧手机交给店家,新手机就能够打8折优惠。
为了更省钱,要不要以旧换新?请通过程序告诉张三
首先,我们来简单的分析一下:
分析:
① 计算不使用以旧换新的花费
7988 - 1500
② 计算使用以旧换新的花费
7988 * 0.8
③ 用if语句的哪种格式来实现该需求呢?
if语句格式2
分析完毕后,我们来说一下实现步骤:
实现步骤:
① 定义变量(money1)纪录不使用以旧换新的花费
② 定义变量(money2)纪录使用以旧换新的花费
③ 用if语句格式2进行判断 money1是否大于money2
④ 根据判断结果,给出相应的提示
知道了实现步骤,下面我们到IDEA中去实现一下:
/* 需求:张三想买一台7988元的新手机,他的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新优惠, 把他的旧手机交给店家,新手机就能够打8折优惠。为了更省钱,要不要以旧换新?请通过程序告诉张三 */ public class IfTest03 { public static void main(String[] args) { //1:定义变量(money1)纪录不使用以旧换新的花费 int money1 = 7988 - 1500; //2:定义变量(money2)纪录使用以旧换新的花费 double money2 = 7988 * 0.8; //3:用if语句格式2进行判断 money1是否大于money2 //4:根据判断结果,给出相应的提示 if (money1 > money2) { System.out.println("使用以旧换新更省钱"); } else { System.out.println("不使用以旧换新更省钱"); } } }
2.2.8 逻辑运算符
Java中常用的逻辑运算符有如下几种:
了解了Java中的逻辑运算符之后,下面我们到IDEA中去使用一下:
/* 逻辑运算符 */ public class OperatorDemo02 { public static void main(String[] args) { //定义变量 int i = 10; int j = 20; int k = 30; //逻辑与:&& System.out.println((i>j) && (i>k));//false && false System.out.println((i<j) && (i>k));//true && false System.out.println((i>j) && (i<k));//false && true System.out.println((i<j) && (i<k));//true && true System.out.println("-----------------------"); //逻辑或:|| System.out.println((i>j) || (i>k));//false || false System.out.println((i<j) || (i>k));//true || false System.out.println((i>j) || (i<k));//false || true System.out.println((i<j) || (i<k));//true || true System.out.println("-----------------------"); //逻辑非:! System.out.println(!(i>j));//!false System.out.println(!!(i>j));//!!false System.out.println(!!!(i>j));//!!!false System.out.println(!!!!(i>j));//!!!!false } }
2.2.9 三元运算符
继续来学习三元运算符:
格式: 关系表达式 ?表达式1 :表达式2;
范例: a > b ? a : b;
执行流程:
- 首先计算关系表达式的值
- 如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
了解了三元运算符的执行流程后,下面我们到IDEA中去使用一下:
/* 三元运算符 */ public class OperatorDemo03 { public static void main(String[] args) { int a = 10; int b = 20; int max = a > b ? a : b; System.out.println("较大的值是:" + max); } }
讲解完毕后,大家赶快动手练习一下吧。
2.2.10 三元运算符和if语句格式2的区别
这里呢,我们来讲解一下三元运算符和if语句格式2的区别,它们有什么区别呢?我们先到IDEA中进行讲解,然后再回来总结:
/* 三元运算符和if语句格式2的区别 */ public class OperatorTest { public static void main(String[] args) { //定义两个int类型的变量 int a = 10; int b = 20; //需求:获取两个数中的较大值 //if语句实现 // int max; // if (a > b) { // max = a; // } else { // max = b; // } // System.out.println("较大的值是:" + max); if(a > b) { System.out.println("较大的值是:" + a); }else { System.out.println("较大的值是:" + b); } //三元运算符实现 int max = a > b? a: b; System.out.println("较大的值是:" + max); } }
2.3 选择语句之switch
来,继续啊,下面我们来学习选择语句中的switch语句。
格式:
格式说明:
执行流程:
了解完switch语句后,下面我们到IDEA中去使用一下:
/* switch语句 */ public class SwitchDemo { public static void main(String[] args) { //定义一个int类型的变量用来表示信号灯的状态(1表示红灯,2表示绿灯,3表示黄灯) int light = 1; // light = 2; // light = 3; // light = 4; //用switch语句实现交通信号灯案例 switch (light) { case 1: System.out.println("红灯停"); break; case 2: System.out.println("绿灯行"); break; case 3: System.out.println("黄灯亮了等一等"); break; default: System.out.println("交通信号灯故障,请在保证安全的情况下通行"); break; } } }
最后,我们来总结一下,刚才在演示代码的时候有个注意事项:
注意: 在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况下,向下运行,直到遇到break,或者整个switch语句结束