目录
语句机构
在Java中语句结构分为三种
- 顺序结构
- 选择结构
- 循环结构
1.顺序机构
按照代码的先后顺序,依次执行。大多数的程序都是按这样的顺序结构运行
是最简单的结构
public class Test {
public static void main(String[] args) {
System.out.println("第一句");
System.out.println("第二句");
System.out.println("第三句");
System.out.println("第四句");
System.out.println("第五句");
}
}
从程序的入口依次向下执行,运行结果如下图所示
2.选择结构
用于判断给定的条件,根据判断的结果判断某些条件
根据判断的结果来控制程序的流程。
其中选择结构又分为:单分支结构、双分支结构、多分支结构
单分支结构的格式为
if(关系表达式){ 如果关系表达式的结果为true的话就执行语句体
语句体 结果为false的话直接执行下行代码
}
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //键盘输入语句
int num = sc.nextInt(); //输入一个整数用num接收
if (num == 1){
System.out.println("输入的数字为1");
}
if (num != 2){
System.out.println("输入的数字不为2");
}
}
}
当输入结果为1时,第一个if语句会判断是否为1,如果为1就打印输入的数字为1
第二个if语句判断到结果不为2,则会打印输入的数字不为2
双分支选择结构的格式为
if(关系表达式){ 如果关系表达式的结果为true则会执行语句体1
语句体1; 关系表达式的结果为false则会执行语句体2
}else{
语句体2;
}
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //键盘输入语句
int num = sc.nextInt(); //输入一个整数用num接收
if (num == 1){ //关系表达式判断num的值
System.out.println("输入的数字为1"); //语句体1
} else{
System.out.println("输入的数字不为1"); //语句体2
}
}
}
当输入的值为1时,if判断表达式结果为1时,则会执行语句体1执行打印语句
不为1时,则会执行打印语句
输入1时结果如下
当输入的值不为1时结果为
多分支结构的格式为
if(判断条件1){ 如果判断条件1的结果为false
语句体1; 那就会依次向下判断
}else if(判断条件2){ 如果判断条件都为false
语句体2; 则会执行else中的语句体
}
...
else{
语句体n+1;
}
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //键盘输入语句
int num = sc.nextInt(); //输入一个整数用num接收
if (num == 1){
System.out.println("输入的数字为1");
} else if(num == 2){
System.out.println("输入的数字为2");
}else if (num ==3){
System.out.println("输入的数字为3");
}else if (num ==4){
System.out.println("输入的数字为4");
}else if (num == 5){
System.out.println("输入的数字为5");
}else if (num == 6){
System.out.println("输入的数字为5");
}else if (num == 7){
System.out.println("输入的数字为5");
}else if (num == 8){
System.out.println("输入的数字为5");
}else if (num == 9){
System.out.println("输入的数字为5");
}else if (num == 10){
System.out.println("输入的数字为5");
} else{
System.out.println("输入的数字不在1-9的范围");
}
}
}
当输入4时,会先从判断条件1判断,条件不符合会依次向下判断。当符合条件时,则会运行语句体
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //键盘输入语句
int num = sc.nextInt(); //输入一个整数用num接收
if (num == 1){
System.out.println("输入的数字为1");
} else if(num == 2){
System.out.println("输入的数字为2");
}else if (num ==3){
System.out.println("输入的数字为3");
}else if (num ==4){
System.out.println("输入的数字为4");
}else if (num == 5){
System.out.println("输入的数字为5");
}else if (num == 6){
System.out.println("输入的数字为5");
}else if (num == 7){
System.out.println("输入的数字为5");
}else if (num == 8){
System.out.println("输入的数字为5");
}else if (num == 9){
System.out.println("输入的数字为5");
}else if (num == 10){
System.out.println("输入的数字为5");
} else{
System.out.println("输入的数字不在1-9的范围");
}
}
}
运行结果为
当输入11时,条件判断都为false时,则会运行else中的语句体
switch语句
switch的格式为
switch(表达式){
case 值1:
语句体1
break;
case 值2:
语句体2
break;
...
default:
语句体n+1;
break;
}
switch中的格式含义:
表达式:(将要被匹配的值)取值为byte、short、incchar,JDK5以后可以是枚举,JDK7以后可以是String。
case:后面跟的是要和表达式进行比较的值(被匹配的值)。
break:表示中断,结束的意思,用来结束switch语句。
default:表示所有情况都不匹配的时候,就执行该处的内容,和i语句的else相似。
num的值与case的值进行匹配,匹配成功则运行语句体。再运行break,结束switch语句
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //键盘输入语句
int num = sc.nextInt(); //输入一个整数用num接收
switch (num){
case 1:
System.out.println("输入的数字为1");
break;
case 2:
System.out.println("输入的数字为2");
break;
case 3:
System.out.println("输入的数字为3");
break;
case 4:
System.out.println("输入的数字为4");
break;
case 5:
System.out.println("输入的数字为5");
break;
case 6:
System.out.println("输入的数字为6");
break;
case 7:
System.out.println("输入的数字为7");
break;
case 8:
System.out.println("输入的数字为8");
break;
case 9:
System.out.println("输入的数字为9");
break;
default:
System.out.println("输入的数字不在1-9之间");
break;
}
}
}
运行结果为
接下来我们看一段代码
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //键盘输入语句
int num = sc.nextInt(); //输入一个整数用num接收
switch (num){
case 1:
System.out.println("输入的数字为1");
case 2:
System.out.println("输入的数字为2");
case 3:
System.out.println("输入的数字为3");
case 4:
System.out.println("输入的数字为4");
case 5:
System.out.println("输入的数字为5");
default:
System.out.println("输入的数字不在1-9之间");
}
}
}
运行结果如下 这是发生了case穿透现象如果没有break语句,就会开始case穿透。
当开始cas穿透时,后续的case就不会有匹配的效果了。当中的语句体都会直接执行
只有运行到break时,或者是switch语句全部执行完毕,才会结束
循环语句
for循环语句
格式为:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句
}
最先执行初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。然后,检测布尔表达式的值:1、如果为 true,循环体被执行。2、如果为 false,循环终止,开始执行循环体后面的语句。执行一次循环后,更新循环控制变量。再次检测布尔表达式,循环执行上面的过程。
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //键盘输入语句
int num = sc.nextInt(); //输入一个整数用num接收
for (int i = 0; i < num; i++) {
System.out.println("循环"+(i+1)+"次");
}
}
}
运行结果如下:循环体执行5次
while语句
while语句计算的表达式,必须返回boolean值。如果表达式计算为true,while语句执行while块的所有语句。while语句继续测试表达式,然后执行它的块,直到表达式计算为false。
基本格式 完整格式
while(条件判断语句){
初始化语句;
循环体语句;
while(条件判断语句){
}
循环体语句;
条件控制语句;
}
打印1-10的值
public class Test {
public static void main(String []args) {
int count = 1;
while (count < 11) {
System.out.println(count);
count++;
}
}
}
do while循环语句
do-while循环,先运行前都会先执行一次,然后再判断,如果条件成立,在循环执行,如果不成立,就会继续往下执行
基本格式: 完整格式;
初始化语句;
do{
do{
循环体语句;
循环体语句;
}while(条件判断语句);
条件控制语句;
}while(条件判断语句);
public class Test{
public static void main(String[] args){
int i= 1;
do{
System.out.println(i);
i++;
}
while(i<10);
}
}
运行结果如下图
三种循环的区别
for循环和while循环先判断条件是否成立,然后决定是否执行循环体
do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体
for和while的区别:
- 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问了
- for循环内部定义的变量,在结束后,就会从内存中消失。
- 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,改变量还可以继续使用
三种循环的场景:
明确循环次数,推荐使用for循环
不明确循环次数,推荐使用while循环
do...while循环,很少使用
三种循环的作用域不同:
for循环的初始化条件仅限循环内部使用;
while循环和do_while循环的初始化条件可以在循环外部使用;
死循环
死循环就是指的是永不会结束的循环,也即是循环的判断条件永远为true
其中的语句体也会一直运行
for(;;;){}
public class Test{
public static void main(String[] args){
for (;;){
System.out.println("停不下来啦~~~~~");
}
}
}
while(true){}是最常见的死循环
public class Test{
public static void main(String[] args){
while(true){
System.out.println("停不下来啦!");
}
}
}
do{}while(true){}
public class Test{
public static void main(String[] args){
do {
System.out.println("停不下来啦~~~");
}
while(true);
}
}