Java基础学习(二)

156 阅读19分钟

Java基础学习(分支结构+循环结构)

Java基础学习---点击进入学习

分支结构和循环结构

1.局部变量

局部变量描述
定义位置:定义在方法体内
作用范围:离当前变量最近的大括号之内(从定义其行开始,到包含其结构结束)
重名问题:重合的作用范围以内不能重名(不重合的作用范围是可以重名的)
默认值:局部变量没有默认值 必须先赋值才能使用
生命周期:随着方法的入栈(压栈)而生效 随着方法的出栈(弹栈)而死亡
存储位置:基本数据类型存在栈中 引用数据类型,变量名在栈中,值在堆中

image.png

/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 9:14
 *  局部变量
 *      定义位置:定义在方法体内
 *      作用范围:离当前变量最近的大括号之内(从定义其行开始,到包含其结构结束)
 *      重名问题:重合的作用范围以内不能重名(不重合的作用范围是可以重名的)
 *      默认值:局部变量没有默认值 必须先赋值才能使用
 *
 *      生命周期:随着方法的入栈(压栈)而生效 随着方法的出栈(弹栈)而死亡
 *      存储位置:
 *          基本数据类型存在栈中
 *          引用数据类型,变量名在栈中,值在堆中
 */
public class TestLocalVariable {
    public static void main(String[] args) {
        int a = 100;
        int b;
//        System.out.println(b);//        int a = 200; 不能重复定义
        if(true){
//            int a = 100;不能重复定义
            int c = 100;
            System.out.println(a);
            System.out.println(c);
        } else{
            int c = 200;
            System.out.println(a);
//            System.out.println(c);
            System.out.println(c);
        }
​
//        System.out.println(c);
​
​
    }
}
​

2.Scanner工具类

Scanner属于JDK提供的一个工具类 用于接收用户输入的数据

此类位于java.util 这个包中

java.util属于工具包 此包中保存在各种工具类 Scanner 、Math数学工具类,Date日期工具类,集合工具类等等

Scanner类提供了一些丰富的方法来实现接收用户输入的不同类型的数据:

next() 接收用户输入的字符串

nextByte() 接收用户输入的byte类型的数据

nextShort() 接收用户输入的short类型的数据

nextInt() 接收用户输入的int类型的数据

nextLong() 接收用户输入的long类型的数据

nextFloat()接收用户输入的float类型的数据

nextDouble() 接收用户输入的double类型的数据

nextBoolean() 接收用户输入的boolean类型的数据

注意:没有nextChar() 即表示 接收字符也要使用next()

Scanner位于JDK提供的包中,与我们所写的类不在同包,使用不在同包的类,要使用import关键字导包。

如果输入了类型不匹配的数据(自动类型提升的没问题) 会出现InputMismatchException输入不匹配异常

异常会中断程序 即和后续的代码不再执行

import java.util.Scanner; // 导包语句 书写在包声明之后 类声明之前/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 9:49
 *  Scanner 类使用
 *  需求:使用Scanner类接收用户输入的信息
 *
 *  如果输入了类型不匹配的数据(自动类型提升的没问题) 会出现InputMismatchException 输入不匹配异常
 *  异常会中断程序 即和后续的代码不再执行
 *
 *
 *
 */
public class TestScanner {
    public static void main(String[] args) {
        // 第一步 创建Scanner类型的变量 取名为input
        Scanner input = new Scanner(System.in);
​
        // 第二步 提示用户输入信息
        System.out.println("请输入您的姓名");
​
        // 第三步 接收用户输入信息 并且保存到变量中
        String name = input.next();
​
        // 第四步 打印用户输入内容
        System.out.println("您输入的名字为:" + name);
​
        // 接下来接收其他的数据类型 重复以上,2,3,4步即可 调用不同的方法
​
        System.out.println("请输入您的年龄");
​
        int age = input.nextInt();
​
        System.out.println("您输入的年龄为:" + age);
​
​
        System.out.println("请输入您的身高");
​
        double height = input.nextDouble();
​
        System.out.println("您输入的身高为:" + height);
​
​
        System.out.println("请输入您今天是否开心");
​
        boolean isHappy = input.nextBoolean();
​
        System.out.println(isHappy == true ? "恭喜你很开心" : "不要灰心丧气");
        // 实际开发中 我们都会直接书写布尔类型变量名 表示判断是否为true
        System.out.println(isHappy ? "恭喜你很开心" : "不要灰心丧气");
​
        System.out.println("程序结束");
​
​
    }
}
​

3. 分支结构

3.1 基本if结构

if(布尔表达式){ ​ //代码块1 }

后续代码... 执行流程: 对布尔表达式进行判断。 结果为true,则先执行代码块1,再执行后续代码。 结果为false,则跳过代码块1,直接执行后续代码。

import sun.rmi.server.Activation$ActivationSystemImpl_Stub;
​
import java.util.Scanner;
​
/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 10:48
 *  需求:;根据用户输入的成绩 判断是否要进行奖励
 *  如果
 *  Java成绩大于80 并且 MySQL成绩大于90分
 *  或者
 *  HTML成绩大于95 并且 JS成绩等于100
 *  获得奖励
 */
public class TestCommentIf3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
​
        System.out.println("请输入Java成绩");
​
        double javaScore = input.nextDouble();
​
        System.out.println("请输入MySQL成绩");
​
        double mySQLScore = input.nextDouble();
​
        System.out.println("请输入HTML成绩");
​
        double HTMLScore = input.nextDouble();
​
        System.out.println("请输入JS成绩");
​
        double JSScore = input.nextDouble();
​
        if( (javaScore > 80 && mySQLScore > 90)   ||   (HTMLScore > 95 && JSScore == 100)){
            System.out.println("恭喜获得奖励");
        }
        System.out.println("程序结束");
    }
}
​

3.2 if-else结构

语法: if(布尔表达式){ ​ //代码块1 }else{ ​ //代码块2 }

后续代码... 执行流程: 对布尔表达式进行判断。 结果为true,则先执行代码块1,再退出整个结构,执行后续代码。 结果为false,则先执行代码块2,再退出整个结构,执行后续代码。

注意:else结构不能单独出现 必须结合if结构使用

import java.util.Scanner;
​
/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 10:45
 *  根据用户输入的年龄判断是否成年
 */
public class TestCommentIf2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
​
        System.out.println("请输入年龄");
​
        int age = input.nextInt();
​
        if(age >= 18){
            System.out.println("恭喜你,成年了");
        }else{
            System.out.println("很遗憾,未成年");
        }
​
        System.out.println("程序结束");
​
    }
}
​

3.3 多重if结构

语法: if(布尔表达式1){ ​ //代码块1 }else if(布尔表达式2){ ​ //代码块2 }else if(布尔表达式3){ ​ //代码块3 }else{ ​ //代码块4 }

执行流程: 表达式1为true,则执行代码块1,再退出整个结构。

表达式2为true,则执行代码块2,再退出整个结构。

表达式3为true,则执行代码块3,再退出整个结构。

以上均为false,则执行代码块4,再退出整个结构。

注意:相互排斥,有一个为true,其他均不再执行, 适用于区间判断。

多重if

多种if可以用于判断多种情况 中间的else-if没有个数限制 根据需求书写

结尾的else结构不是必须的 根据需求是否书写

如果书写了else 那么整个多重if结构为多选1

如果没有书写else 那么整个多重if结构为多选1 或者 多选0

注意:如果使用多重if处理连续区间的情况 那么条件的顺序必须为升序 或者 降序 不能是乱序

需求:根据用户输入的分数,划分等级

大于95 优秀

大于80 良好

大于70 中等

大于59 及格

其他情况 不及格

​
​
import java.util.Scanner;
​
/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 11:08
 *  多重if
 *  多种if可以用于判断多种情况 中间的else-if没有个数限制 根据需求书写
 *  结尾的else结构不是必须的 根据需求是否书写
 *      如果书写了else 那么整个多重if结构为多选1
 *      如果没有书写else 那么整个多重if结构为多选1 或者 多选0
 *
 *  注意:如果使用多重if处理连续区间的情况 那么条件的顺序必须为升序 或者 降序 不能是乱序
 *
 *  需求:根据用户输入的分数,划分等级
 *  大于95 优秀
 *  大于80 良好
 *  大于70 中等
 *  大于59 及格
 *  其他情况 不及格
 */
public class TestManyIf1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
​
        System.out.println("请输入您的分数");
​
        int score = input.nextInt();
​
        if(score > 95){
            System.out.println("优秀");
        }else if(score > 80){
            System.out.println("良好");
        }else if(score > 70){
            System.out.println("中等");
        }else if(score > 59){
            System.out.println("及格");
        }else{
            System.out.println("不及格");
        }
​
        System.out.println("程序结束");
    }
}
​

使用多重if结构实现 根据名次进行对应的奖励

第一名 奖励夏令营一周

第二名 奖励苹果15袋

第三名 奖励笔记本一本

第四名 口头表扬一次

import java.util.Scanner;
​
/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 11:19
 *  使用多重if结构实现 根据名次进行对应的奖励
 *  第一名 奖励夏令营一周
 *  第二名 奖励苹果15袋
 *  第三名 奖励笔记本一本
 *  第四名 口头表扬一次
 *  使用多重if处理非连续区间的情况 对条件顺序没有要求
 *
 */
public class TestManyIf2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
​
        System.out.println("请输入名次");
​
        int number = input.nextInt();
​
        if(number == 2){
            System.out.println("奖励苹果15袋");
        }else if(number == 1){
            System.out.println("奖励夏令营一周");
        }else if(number == 4){
            System.out.println("口头表扬一次");
        }else if(number == 3){
            System.out.println("奖励笔记本一本");
        }
​
        System.out.println("程序结束");
​
    }
}

3.4 嵌套if

if(外层表达式){ ​ if(内层表达式){ ​ //内层代码块1 ​ }else{ ​ //内层代码块2 ​ } }else{ ​ //外层代码块 }

执行流程: 当外层条件满足时,再判断内层条件。

注意: 一个选择结构中,可嵌套另一个选择结构。 嵌套格式正确的情况下,支持任意组合。

import java.util.Scanner;
​
/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 13:55
 *  嵌套if结构:当外层条件满足时,再判断内层条件。
 *  一个选择结构中,可嵌套另一个选择结构。
 *  嵌套格式正确的情况下,支持任意组合。
 *
 *  需求:学校举行百米跑步比赛 如果时间小于13秒 可以进入决赛
 *  然后再根据性别进行分组 男子组 或者 女子组
 *
 */
public class TestInnerIf1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
​
        System.out.println("请输入您的跑步时间");
​
        double time = input.nextDouble();
​
        if(time < 13){
            System.out.println("请输入您的性别");
​
            String sex = input.next();
​
            // 表示可以进入决赛
            // 判断性别  判断字符串的内容不要使用==比较(原因后续讲解)
            // 应该使用String类提供的equals()方法
            // 用法格式:字符串变量名.equals("内容") 如果变量和内容相同 结果为true 不同则为false
            if(sex.equals("男")){
                System.out.println("恭喜进入男子组决赛");
            }else if(sex.equals("女")){
                System.out.println("恭喜进入女子组决赛");
            }else{
                System.out.println("暂不支持其他性别,请等待下一届");
            }
​
        }else{
            // 淘汰
            System.out.println("很遗憾,被淘汰");
        }
        System.out.println("程序结束");
    }
}
​

4. if结构细节总结

if语句块只有一条执行语句时,一对{}可以省略,但建议保留

当多重if结构是“多选一”时,最后的else是可选的,根据需要可以省略

当多重if结构多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓

当多个条件是“连续的区间”时,条件必须为升序或者降序

5.switch结构

语法: switch(变量|表达式){ ​ case 值1: ​ 逻辑代码1; ​ case 值2: ​ 逻辑代码2; ​ case 值n: ​ 逻辑代码n; ​ default: ​ 未满足时的逻辑代码; }

可判断的类型: byte、short、int、char、String(JDK7+)

执行流程: 如果变量中的值等于值1,则执行逻辑代码1。 如果变量中的值等于值2,则执行逻辑代码2。 如果变量中的值等于值n,则执行逻辑代码n。 如果变量中的值没有匹配的case值时,执行default中的逻辑代码。

注意:所有case的取值不可相同。

import java.util.Scanner;
​
/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 14:17
 *  switch擅长处理某个值属于固定等值的情况
 *
 *  switch支持的数据类型:byte short int char String(JDK7+) 枚举(JDK5+)
 *
 *  case穿透:执行完当前case语句 继续执行后续的case语句
 *
 *  break关键字:加在case之后 表示执行完当前case语句 直接跳出switch结构  避免case穿透
 *
 *  使用switch结构实现 根据名次进行对应的奖励
 *    第一名 奖励夏令营一周
 *    第二名 奖励苹果15袋
 *    第三名 奖励笔记本一本
 *    第四名 口头表扬一次
 */
public class TestSwitch1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您的名次");
        int number = input.nextInt();
        switch(number){
            case 1:
                System.out.println("奖励夏令营一周");
                break;
            case 2:
                System.out.println("奖励苹果15袋");
                break;
            case 3:
                System.out.println("奖励笔记本一本");
                break;
            case 4:
                System.out.println("口头表扬一次");
                break;
            default:
                System.out.println("除了1~4名之外,其他没有任何奖励");
                break;
​
        }
​
        System.out.println("程序结束");
​
​
​
    }
}
​

合理利用switch结构的case穿透

使用switch结构实现 根据名次进行对应的奖励

第一名 奖励夏令营一周

第二名 奖励夏令营一周

第三名 奖励笔记本一本

第四名 口头表扬一次


import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 14:28
 *
 *  合理利用switch结构的case穿透
 *   使用switch结构实现 根据名次进行对应的奖励
 *      第一名 奖励夏令营一周
 *      第二名 奖励夏令营一周
 *      第三名 奖励笔记本一本
 *      第四名 口头表扬一次
 *
 */
public class TestSwitch2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入您的名次");

        int number = input.nextInt();

        switch(number){
            case 1:
            case 2:
                System.out.println("奖励夏令营一周");
                break;
            case 3:
                System.out.println("奖励笔记本一本");
                break;
            case 4:
                System.out.println("口头表扬一次");
                break;
            default:
                System.out.println("继续加油");
                break;
        }


        System.out.println("程序结束");





    }
}

switch结构的其他数据类型使用

switch支持的数据类型:byte short int char String(JDK7+) 枚举(JDK5+)


/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 14:33
 *  switch结构的其他数据类型使用
 *  switch支持的数据类型:byte short int char String(JDK7+) 枚举(JDK5+)
 */
public class TestSwitch3 {
    public static void main(String[] args) {
        byte b1 = 1;
        short s1 = 2;
        int i1 = 3;
        char ch1 = '中';
        String str1 = "A";
        switch(str1){
            case "A":
                System.out.println("取值为1");
                break;
            case "20013":
                System.out.println("取值为2");
                break;
            case "\u4e2f":
                System.out.println("取值为3");
                break;
            case "4":
                System.out.println("取值为4");
                break;
        }

        System.out.println("程序结束");
    }
}

6.循环结构

任何循环都有以下四个必不可少的部分:

1.计数器初始化

2.循环条件

3.循环体

4.计数器变化

6.1 while循环

计数器初始化

while ( 循环条件 ) { ​ ​ 循环操作

}

while循环

while单词:当……

需求:使用while循环打印100句好好学习

while循环可以实现、解决循环次数固定的情况


/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 15:07
 *  while循环
 *  while单词:当……
 *
 *  任何循环都有以下四个必不可少的部分:
 *      1.计数器初始化
 *      2.循环条件
 *      3.循环体
 *      4.计数器变化
 *
 *  需求:使用while循环打印100句好好学习
 *
 *  while循环可以实现、解决循环次数固定的情况
 *
 */
public class TestWhile1 {
    public static void main(String[] args) {
        // 计数器初始化
        int i = 1;

        // 循环条件
        while(i <= 10000){
            // 循环体
            System.out.println("第" + i + "次好好学习");
            // 计数器变化
            ++i;
        }


        System.out.println("程序结束");
    }
}

使用while循环实现

需求:老师每天检查赵四的学习任务是否合格,如果不合格,则继续进行。

老师给赵四安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。

当前需求为:while循环实现的循环次数不固定的情况

总结:while循环可以用于处理循环次数确定以及循环次数不确定的情况

通常用于处理循环次数不确定的情况 因为循环次数确定的情况 for循环更为简洁


import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 15:14
 *  使用while循环实现
 *  需求:老师每天检查赵四的学习任务是否合格,如果不合格,则继续进行。
 *  老师给赵四安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。
 *
 *  当前需求为:while循环实现的循环次数不固定的情况
 *
 *  总结:while循环可以用于处理循环次数确定以及循环次数不确定的情况
 *  通常用于处理循环次数不确定的情况 因为循环次数确定的情况 for循环更为简洁
 *
 */
public class TestWhile2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入你今天的任务是否合格?y/n");

        // 相当于:计数器初始化
        String answer = input.next();

        // 循环条件
        while(answer.equals("n")){
            // 循环体
            System.out.println("上午阅读教材,学习理论概念");
            System.out.println("下午上机编程,掌握代码部分");

            System.out.println("请输入你今天的任务是否合格?y/n");
            // 相当于:计数器变化
            answer = input.next();
        }

        System.out.println("程序结束");
    }
}

6.2 do-while循环

计数器初始化

do {

循环操作

}while ( 循环条件 );

经过几天的学习,老师给赵四一道测试题,

让他先上机编写程序完成,然后老师再检查是否合格。如果不合格,则继续编写……

分析:当前需求需要赵四先做题 执行做题的操作 然后再判断是否合格 相当于操作在判断之前

所以应该使用do-while循环来实现


import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 15:29
 *  经过几天的学习,老师给赵四一道测试题,
 *  让他先上机编写程序完成,然后老师再检查是否合格。如果不合格,则继续编写……
 *
 *  分析:当前需求需要赵四先做题 执行做题的操作 然后再判断是否合格 相当于操作在判断之前
 *  所以应该使用do-while循环来实现
 */
public class TestDoWhile1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String answer;
        do{
            System.out.println("上机编程代码……");

            System.out.println("请输入您是否合格?y/n");

            answer = input.next();

        }while(answer.equals("n"));
        
        System.out.println("恭喜你完成任务");

        System.out.println("程序结束");


    }
}

使用do-while循环实现打印100次好好学习

do-while循环可以实现循环次数确定 以及 循环次数不确定的情况

通常用于处理循环次数不确定的情况 因为循环次数确定的情况 for循环更为简洁


/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 15:36
 *  使用do-while循环实现打印100次好好学习
 *
 *  do-while循环可以实现循环次数确定 以及 循环次数不确定的情况
 *  通常用于处理循环次数不确定的情况 因为循环次数确定的情况 for循环更为简洁
 *
 */
public class TestDoWhile2 {
    public static void main(String[] args) {
        int i = 1;
        do{
            System.out.println("第" + i + "遍好好学习");
            i++;
        }while(i <= 100);
    }
}

6.3 while和do-while的区别?

while 先判断 后执行 条件不成立 一次都不执行

do-while 先执行后判断 不管条件是否成立 至少执行一次

都通常用于循环次数不确定的情况

6.4 for循环

for( 计数器初始化 ;判断条件 ;计数器变换 ){ ​ 循环体 }

for循环 循环次数确定的情况 for循环更为简洁

for循环执行的顺序:

1.计数器初始化 只执行一次

2.循环条件

3.循环体

4.计数器变化

需求:使用for循环实现打印100遍好好学习

/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 15:46
 *  for循环 循环次数确定的情况 for循环更为简洁
 *  for循环执行的顺序:
 *      1.计数器初始化 只执行一次
 *      2.循环条件
 *      3.循环体
 *      4.计数器变化
 *
 *  需求:使用for循环实现打印100遍好好学习
 */
public class TestFor1 {
    public static void main(String[] args) {
        for(int i = 1;i <= 10000;++i){
            System.out.println("第" + i + "遍好好学习");
        }
    }
}

使用for循环实现:循环输入某同学结业考试的5门课成绩,并计算平均分


import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 15:53
 *  使用for循环实现:循环输入某同学结业考试的5门课成绩,并计算平均分
 */
public class TestFor2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入您的名字");

        String name = input.next();

        double sum = 0;

        for(int i = 1;i <= 5;i++){
            System.out.println("请输入第" + i  + "门成绩");

            double score = input.nextDouble();

            sum += score;
        }
        System.out.println(name + "同学的平均分是:" + sum / 5);
        System.out.println("程序结束");
    }
}

根据用户输入的数字打印加法表

如何实现递减效果:使用一个固定的值 减去一个递增的值


import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/12/29 15:57
 *  根据用户输入的数字打印加法表
 *
 *  如何实现递减效果:使用一个固定的值 减去一个递增的值
 */
public class TestFor3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个数字");

        int num = input.nextInt();

        for(int i = 0;i <= num;i++){
            System.out.println(i + "+" + (num - i) + "=" + num);
        }

        System.out.println("程序结束");

    }
}

8.三种循环对比

image.png

区别1:语法不同

区别2:执行顺序 ​ while 循环:先判断,再执行 ​ do-while循环:先执行,再判断 ​ for循环:先判断,再执行

区别3:适用情况 ​ 循环次数确定的情况,通常选用for循环 ​ 循环次数不确定的情况,通常选用while或do-while循环

9.break关键字

break关键字 可以用于switch结构 或者 循环结构中 break用在循环结构中 通常(99%)要结合分支语句使用

分别表示跳出、结束、终止switch结构或者循环结构

需求:使用循环描述跑步10圈 当跑完第5圈 退出

alt + shift + ↑ ↓ 上下移动当前行代码

10.continue关键字

continue:单词含义 继续

只能用于循环中 表示跳出本次循环 继续执行下一次循环

11.break和continue关键字的区别

使用场合 ​ break用于switch结构和循环结构中 ​ continue用于循环结构中

作用(循环结构中) ​ break语句终止某个循环,程序跳转到循环块外的下一条语句 ​ continue跳出本次循环,进入下一次循环 ​ 双重循环亦如此

12.break和continue关键字补充(了解)

问题:在循环中存在switch switch中的break会不会中断循环?

不会 因为break默认情况下 只针对于离其最近的结构生效

如何让switch中的break跳出循环?

可以在循环前边加上标记,使用break跳出指定标记名称


/**
 * @author WHD
 * @description TODO
 * @date 2024/1/2 14:39
 *  问题:在循环中存在switch switch中的break会不会中断循环?
 *  不会 因为break默认情况下 只针对于离其最近的结构生效
 *
 *  如何让switch中的break跳出循环?
 *
 *
 *
 */
public class TestBreak {
    public static void main(String[] args) {
        abc : for (int i = 1; i <= 5; i++) {
            switch (i) {
                case 1:
                    System.out.println("数值为1");
                    break;
                case 2:
                    System.out.println("数值为2");
                    break;
                case 3:
                    System.out.println("数值为3");
                    break abc;
                case 4:
                    System.out.println("数值为4");
                    break;
                case 5:
                    System.out.println("数值为5");
                    break;
            }
        }

        System.out.println("---------------------------------------------");

        sb : for(int i = 1;i <= 5;i++){
            for(int j = 1;j < 5;j++){
                if(j == 3){
                    continue sb;
                }
                System.out.print(j + "\t");
            }
            System.out.println();
        }



        System.out.println("程序结束 ");
    }
}