[Java笔记3] 分支和循环、Debug工具

目录

IDEA的两个快捷键

Debug工具

分支

if、switch分支适合的业务场景

switch分支注意事项

switch的穿透性

循环

for 和 while 的区别

死循环

跳出嵌套循环(标签、标志)

随机数对象Random


视频教程传送门  -> https://www.bilibili.com/video/BV1Cv411372m?p=39

IDEA的两个快捷键

1.把一段代码包进一个结构,选中代码段 -> 按 Alt + Ctrl + T

 2.for循环快捷写法

fori => create iteration loop

 itar => create iterate elements of array

更多参考 IntelliJ IDEA(快捷键):快速生成各种for循环 https://blog.csdn.net/Soinice/article/details/83505198

Debug工具

在需要打断点的地方打上断点,然后右键 "Debug 'BreakAndContin....main()'"

 点击下一步,可以看到每步变量的值;点击左边第二个绿色的按钮,可以去下一个断点

更多参考  Intellij IDEA调试功能使用总结 https://blog.csdn.net/deepwishly/article/details/54645022
 

分支

if、switch分支适合的业务场景

if在功能上远远强大于switch -> 
if适合做区间匹配
switch适合做值匹配的分支选择

switch分支注意事项

- 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float、long
- case给出的值不允许重复,且只能是字面量,不能是变量
- 不要忘记写break,否则会出现穿透现象

switch的穿透性

如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支。

【例】月份天数查看器

package com.test.branch;

public class SwicthDemo {
    public static void main(String[] args) {
        // 用户输入月份可以展示该月份的天数
        // 1、3、5、7、8、10、12月份是31天
        // 2月份是闰年是29天、非闰年是28天
        // 4、6、9、11月份是30天
        int month = 7;
        switch (month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(month +"是31天!");
                break;
            case 2:
                System.out.println(month +"月闰年为29天、非闰年为28天!");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(month +"是30天!");
                break;
            default:
                System.out.println("数据有误!");
        }
    }
}


循环

for 和 while 的区别

- for循环和while循环的执行流程是一样的
- 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环
- for循环中,控制循环的变量只在循环中可以使用;while循环中,控制循环的变量在循环后还可以继续使用(如下,因为前者m是在花括号之外定义的)

死循环

for(;;) {
}
----------------
while(true) {
}
----------------
do {
} while (true);

跳出嵌套循环(标签、标志)

方法一,使用标签

break 可以用在嵌套循环中跳出整个外部循环的并立即结束它。  

OUT:
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 5; j++) {
    … 
       break OUT;
    }
}

continue: 可以用在嵌套循环中跳出外部循环的当次执行,进入外部循环的下一次。

OUT:
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 5; j++) {
    … 
       count OUT;
    }
}

【例】如下使用了标签OUT

package com.test.loop;

public class BreakAndContinueDemo {
    public static void main(String[] args) {
        OUT:
        for (int i = 1; i <= 4; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.print(j + "\t");
                if(i == 2 && j == 3){
                    System.out.print("\n");
                    break OUT; // 指定跳出外部循环,并结束外部循环了!
                }

            }
            System.out.print("\n");
        }
        System.out.println("------------------");

        OUT:
        for (int i = 1; i <= 4; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.print(j + "\t");
                if(i == 2 && j == 3){
                    System.out.print("\n");
                    continue OUT ;
                }
            }
            System.out.print("\n");
        }
        System.out.println("------------------");
    }
}

输出结果:

不使用标签输出如下,

  

方法二,上层循环定义一个标志

break 同上

continue 行为和上述不一样,会完成当次循环然后跳出外部循环

package com.test.loop;

public class BreakAndContinueDemo {
    public static void main(String[] args) {
        boolean flag = true;
        for (int i = 1; i <= 4 && flag; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.print(j + "\t");
                if(i == 2 && j == 3){
                    System.out.print("\n");
                    flag = false;
                    break; // 指定跳出外部循环,并结束外部循环了!
                }
            }
            System.out.print("\n");
        }
        System.out.println("------------------");

        flag = true;
        for (int i = 1; i <= 4 && flag; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.print(j + "\t");
                if(i == 2 && j == 3){
                    System.out.print("\n");
                    flag = false;
                    continue  ;
                }
            }
            System.out.print("\n");
        }
        System.out.println("------------------");
    }
}

输出如下:

随机数对象Random

nextInt(n) 生成 0 n-1 之间的随机数,不包含n

【例】生成5个1~10的随机整数

package com.test.loop;

import java.util.Random;

public class testWhileFor {
    public static void main(String[] args) {
        Random r = new Random();

        for (int i = 0; i < 5; i++) {
            int data = r.nextInt(10) + 1;
            System.out.println(data);
        }

    }
}

输出结果示例

猜你喜欢

转载自blog.csdn.net/wy_hhxx/article/details/121304824