自学Java29

60 阅读2分钟

引言

  • 在记录自己自学java过程中,首先声明关于学习顺序可能并不很科学,即使我也是通过一些公开的资料来进行学习,但不会是完全无基础的教学,更像是比对着python(本人平时编程使用的是python)比较实现方法的异同学习,请酌情参考学习,有理解不对的地方欢迎指正。

java-流程控制 6

break和continue

补:for each循环

  • 其实当遍历数组的时候,可以使用for each循环
public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 4, 9, 16, 25 };
        for (int n : ns) {
            System.out.println(n);
        }
    }
}

  • for each循环的变量n不再是计数器,而是直接对应到数组的每个元素,除此之外还可以遍历所有“可迭代”的数据类型,比如List、Map等
  • 但是同样可以看出来for each循环非常简洁,显然是无法指定遍历顺序,也无法获取数组的索引。

break和Continue在各个循环的使用场景

  • 首先是在for循环中,所有的控制语句都在()中,如果想中途满足条件中止显然括号内有时候不方便定义, 那就可以配合满足if的停止条件和关键字break来跳出循环
public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=1; ; i++) {
            sum = sum + i;
            if (i == 100) {
                break;
            }
        }
        System.out.println(sum);
    }
}
  • 因此,break语句通常都是配合if语句使用
  • 但是需要注意的是,在多层嵌套循环中break退出循环只退出所在的那一层循环(应该也算是常识吧,但是最主要是如果结构比较混乱就容易出问题,python中理解这一点倒是不容易出问题)
public class Main {
    public static void main(String[] args) {
        for (int i=1; i<=10; i++) {
            System.out.println("i = " + i);
            for (int j=1; j<=10; j++) {
                System.out.println("j = " + j);
                if (j >= i) {
                    break;
                }
            }
            // break跳到这里
            System.out.println("breaked");
        }
    }
}

  • 关于continu主要是关于到底跳过这次循环,但是执行了多少呢?
public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=1; i<=10; i++) {
            System.out.println("begin i = " + i);
            if (i % 2 == 0) {
                continue; // continue语句会结束本次循环
            }
            sum = sum + i;
            System.out.println("end i = " + i);
        }
        System.out.println(sum); // 25
    }
}

  • 就算break会终止跳出也会执行完break之前的代码,并不会整个循环代码都不执行