想要了解流程控制语句就必须先提一下数据输入,毕竟没有数据的话就执行不了后面的流程控制
数据输入
数据输入是程序获取指获取用户键盘录入的数据,那么在java语言中,怎样实现呢?
我们可以通过 Scanner 类来获取用户的输入。
Scanner
scanner是扫描器的意思,主要用于与用户进行交互。扫描器允许程序从不同的地方获取数据并赋值给变量,从而增加程序的多样性、交互性。
使用步骤
- 导包:
import java.util.Scanner;
- 创建Scanner对象:
Scanner sc = new Scanner(System.in);
- 使用Scanner:
String str = sc.next();
package com.blb;
//1.导包
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//2.创建一个Scanner对象
//数据类型 变量名 = new 数据类型();
Scanner sc = new Scanner(System.in);
//3.从扫描器中获取一个字符串
String str = sc.next(); //sc.next();会进入阻塞状态(等待状态),等待用户输入
System.out.println("111==="+str);
}
}
包package
包其实指的是目录,作用主要是方便管理代码。
使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。
Scanner 类在java.util包下,所以需要将该类导入。
现在来讲讲流程控制语句
if分支语句
if单分支语句
1.if语句介绍
语法格式:
if(条件表达式){
语句体;
}
//其它语句
2.if语句执行流程
(1) 首先计算条件表达式的值;
(2) 如果条件表达式的值为true就执行语句体;
(3) 如果条件表达式的值为false就不执行语句体;
(4) 继续执行后面的其他语句。
if...else双分支语句
1.语法格式:
if(条件表达式) {
语句体1;
} else() {
语句体2;
}
//其它语句
2.if...else语句执行流程
(1) 首先计算条件表达式的值;
(2) 如果条件表达式的值为true就执行语句体1;
(3) 如果条件表达式的值为false就执行语句体2;
(4) 继续执行后面的其他语句。
if...else if...else多分支语句
1.if..else if...else语句介绍
if (条件表达式1) {
语句体1;
} else if (条件表达式2) {
语句体2;
}
...
}else if (条件表达式n) {
语句体n;
} else {
语句体n+1;
}
//其它语句
2.if..else if...else执行流程
(1) 首先计算条件表达式1的值,判断其结果是true还是false;
(2) 如果是true就执行语句体1,然后执行最下面的其他语句;
(3) 如果是false就继续计算条件表达式2,判断其结果是true还是false;
(4) 如果是true就执行语句体2,然后执行最下面的其他语句;
(5) 如果是false就继续计算条件表达式…,判断其结果是true还是false;
(6) …
(7) 如果没有任何条件表达式为true,就执行else中的语句体n+1。
switch分支语句
1.switch语句格式
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
2.Switch执行流程
- 首先计算出表达式的值;
- 接着,自上而下和case依次比较,一旦有对应的值匹配,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。