JAVA中的语序

目录

1. 顺序

2. 分支

2.1 if语句

2.1.1 单一条件的if语句

2.1.2 if-else语句

 2.1.3 多层if-else语句

2.2 switch语句

3. 循环

3.1 for循环

3.2 while循环

3.3 do-while循环

3.4 break和continue


语序即代码运行的顺序,主要分为三种,顺序、分支和循环。

1. 顺序

顺序结构是一种最基本的程序控制结构,指的是程序中的代码按照从上到下的顺序依次执行。所有的代码行都会被逐行执行,除非遇到控制结构(如条件判断或循环)改变了这一顺序。常用于简单的任务,如变量声明、赋值、算术操作、输入输出等基本操作。

例如自我介绍

public class DemoNew {
    public static void main(String[] args){
        System.out.println("大家好");
        System.out.println("我的名字叫xxx");
        System.out.println("来自xxx");
    }
}

结果为连续的三句话

2. 分支

分支主要用到if和switch语句,根据特定条件执行不同的代码块。

2.1 if语句

2.1.1 单一条件的if语句

这种形式用于在某个条件执行某个代码块。如果条件为,则跳过该代码块。

格式为

if(条件){

        //条件为真时执行的代码

}

例如

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        //判断数字是否大于2
        if(num>2){//数字大于2则为true,if执行括号内的内容,否则跳过if语句
            System.out.println("数字大于2");
        }
        System.out.println("判断结束");
    }
}

结果为

但是实际运用中,一般可能需要几种情况,我们可以用多个if语句。

2.1.2 if-else语句

这种形式在条件为时执行一个代码块,为时执行另一个代码块。

格式为

if (条件) {
    // 当条件为真时执行的代码
} else {
    // 当条件为假时执行的代码
}
 

这里要注意的是if和else的代码块肯定有一个一定要执行,毕竟条件要么为true,要么为false。

我们对上面代码改良

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        //判断数字是否大于2
        if(num>2){//数字大于2则为true,if执行括号内的内容
            System.out.println("数字大于2");
        }else{//否则为false,执行else括号里的内容
            System.out.println("数字小于等于2");
        }
        
    }
}

 2.1.3 多层if-else语句

这种形式用于检查多个条件。每个条件依次检查(顺序),如果某个条件为真,则执行对应的代码块,并跳过后续的检查。如果所有条件都为假,则执行else代码块。

if (条件1) {
    // 当条件1为真时执行的代码
} else if (条件2) {
    // 当条件2为真时执行的代码
} else {
    // 当所有条件都为假时执行的代码
}

我们举一个例子(要求输入1-5内的任意一个整数,输出其大写形式) :

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        if(num==1){
            System.out.println("一");
        }else if(num==2){
            System.out.println("二");
        }else if(num==3){
            System.out.println("三");
        }else if(num==4){
            System.out.println("四");
        }else if(num==5){
            System.out.println("五");
        }else{//输入的不属于1-5之间的任意一个整数
            System.out.println("输入不合法");
        }
    }
}

当输入为1、2、3、4、5,都会打印出对应的大写形式,否则就会输出"输入不合法"。但是这样的话,if-else语句太多了。

2.2 switch语句

switch语句用于执行多分支选择的控制结构,适用于基于单个变量的多重条件判断。

switch (表达式) {//表达式必须是一个可计算为整数、字符串、枚举、字符等类型的值
    case 情况1://情况用于和表达式的值进行比较,只有相同才能执行情况1所对应的代码
        // 当表达式等于 value1 时执行的代码
        break;/*用于跳出switch语句,如果省略,则将一直往下进行,直到运行下一个break或                     者到switch的右大括号*/
    case 情况2:
        // 当表达式等于 value2 时执行的代码
        break;
    // 可以有多个 case 子句
    default://default子句是可选的,当上述情况都不符合,就会执行default子句当中的代码
        // 当表达式不等于任何一个 case 的值时执行的代码
}

我们将2.1.3涉及到的代码用switch进行重写,如下:

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        switch(num){
            case 1:
                System.out.println("一");
                break;
            case 2:
                System.out.println("二");
                break;
            case 3:
                System.out.println("三");
                break;
            case 4:
                System.out.println("四");
                break;
            case 5:
                System.out.println("五");
                break;
            default:
                System.out.println("输入不合法");
        }
    }
}

为了让大家了解break的用处,提出一个新的问题。(假设我们有一个程序需要判断某天是工作日还是周末,并输出相应的消息。周一到周五都是工作日,而周六和周日是周末。)

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入星期几:");
        int day=sc.nextInt();
        switch (day) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("今天是工作日");
                break;
            case 6:
            case 7:
                System.out.println("今天是周末");
                break;
            default:
                System.out.println("输入无效");
                break;
        }
    }
}

无论输入1-5之间的哪个数字,都会打印出‘今天是工作日’,因为代码共享。这个代码还可以改良,利用case后可以放多个值的特性。

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入星期几:");
        int day=sc.nextInt();
        switch (day) {
            case 1,2,3,4,5:
                System.out.println("今天是工作日");
                break;
            case 6,7:
                System.out.println("今天是周末");
                break;
            default:
                System.out.println("输入无效");
                break;
        }
    }
}

但是关于switch有很多注意事项

1.每个case的值必须是唯一常量表达式,不能是变量或动态计算的值。

2.如果没有break,则会发生“贯穿”,执行下一个case的代码。因此,如果你不需要“贯穿”,务必在每个case后使用break。

3.default虽然是可选的,但强烈建议使用,以便处理任何未匹配的情况。

4.swtich只适合确定的离散值选择,当涉及到范围时,if-else更适合。

在最新版的switch中,增加了几个功能。

1.case语法变为case值->表达式且默认自带break;例如case 1-> System.out.println("今天是工作日");

2.表达式形式的switch允许你将swtich的结果赋值给一个变量,但switch里面的case返回的得是常量,且和变量的类型相同。

例如

String dayName = switch (day) {
    case 1 -> "Monday";
    case 2 -> "Tuesday";
    case 3 -> "Wednesday";
    case 4 -> "Thursday";
    case 5 -> "Friday";
    case 6 -> "Saturday";
    case 7 -> "Sunday";
    default -> "Invalid day";
};

System.out.println(dayName);

3.yield可以返回值。

String dayName = switch (day) {
    case 1 -> "Monday";
    case 2 -> "Tuesday";
    case 3 -> {
        System.out.println("Midweek day");
        yield "Wednesday";
    }
    case 4 -> "Thursday";
    case 5 -> "Friday";
    case 6 -> "Saturday";
    case 7 -> "Sunday";
    default -> {
        System.out.println("Invalid day");
        yield "Unknown";
    }
};

3. 循环

循环允许在满足特定条件的情况下重复执行一段代码。

3.1 for循环

格式为

for (初始化语句; 循环条件表达式; 更新语句) {
    // 循环体代码
}

初始化语句:在循环开始时执行一次。通常用于声明和初始化循环变量。

循环条件表达式:每执行一次循环就判断一次,如果是true,则继续循环,否则就跳出for循环。

更新语句:用来更新初始化的变量,防止一直循环,每执行一次for循环,变量就更新一次。

例如按顺序输出1-5之间的整数:

public class DemoNew {
    public static void main(String[] args){
        for(int i=1;i<=5;i++){
            System.out.println(i);
        }
    }
}

共执行5次,i从1到5,当运行到第六次时,i>5,为false,跳出for循环。

此外在for循环里定义的变量,离开for循环后变得没有意义。

3.2 while循环

while循环在每次迭代之前检查条件表达式的结果,并在条件为true时执行循环体内的代码。

while (循环条件表达式) {
    // 循环体代码
}

循环条件表达式:每次循环开始前进行判断。如果条件为true,则执行循环体代码;如果条件为false,则退出循环。

和for循环的区别就在于,当面临不知道要运行多少次而只知道最后要满足什么条件时,while循环更适合。 

例如上面那个例子可以改写为:

public class DemoNew {
    public static void main(String[] args){
        int i=1;
        while(i<=5)
            System.out.println(i);
            i++;
        }
    }
}

值得注意的是while的循环条件表达式里面的变量的值要更新,防止陷入死循环,更新过程在while中,且在while循环之前定义,不然无法使用。

3.3 do-while循环

和while循环有一点区别,do-while循环在执行循环体代码之前不会检查条件,而是在每次循环之后检查条件,即至少运行一次。

格式为:

do {
    // 循环体代码
} while (循环条件表达式);

适合于那些需要确保至少进行一次操作的场景,总体不太实用。 

3.4 break和continue

break用于立即退出当前循环(包括for、while 和do-while循环)或switch语句。它会跳出循环体并继续执行循环后的代码。break语句可以用来提前结束循环,通常用于满足某个特定条件时停止循环。

例如输出1-10之间的数字,但是遇到5就退出循环:

public class DemoNew {
    public static void main(String[] args){
        int i=1;
        while(i<=10){
            if(i==5) {
                break;
            }
            System.out.println(i);
            i++;
        }
    }
}

其实if里的条件表达式可以加入到while中。

continue用于跳过当前循环中的剩余代码,并开始下一次循环迭代。continue语句不会退出循环,而是直接跳过当前迭代剩余的部分,回到循环条件判断部分。不能用于switch部分。

例如输出1-10之间的数字,但不输出3的倍数:

public class DemoNew {
    public static void main(String[] args){
        int i=1;
        while(i<=10){
            if(i%3==0) {//是3的倍数就跳出本轮循环,但还是要更新数据
                i++;
                continue;
            }
            else{
                System.out.println(i);
                i++;
            }
        }
    }
}

此外break和continue都只能退出最内层的循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值