天天看点

JavaSe流程控制04:循环(笔记)

视频学习地址

点我跳转ψ(`∇´)ψ

前言

相应的语句需要执行多次,那么循环结构就诞生了,在Java5中引入了一种主要用于数组的增强型for循环。

while循环

JavaSe流程控制04:循环(笔记)
  • 只要布尔值为true,循环就会一直执行下去
  • 大多数情况是会让循环停止下来的,需要一个让表达式失效的方式来结束循环
  • 少部分情况需要循环一直执行,比如服务器的请求响应监听
  • 循环条件一直为true就会造成无限死循环,正常的业务编程中应该要避免死循环,会影响程序性能或者造成程序卡死崩溃

do…while循环

对于while语句而言,如果不满足条件,则不会循环,但有时候我们需要即使不满足条件,也至少要执行一次,这个时候do…while就诞生了。

JavaSe流程控制04:循环(笔记)

while和do…while的区别

  • while先判断后执行,do…while先执行后判断
  • do…while总是保证循环体会被至少执行一次,这是它们的主要差别

for循环

JavaSe流程控制04:循环(笔记)

虽然所有的循环结构都可以用while和do…while表示,但Java提供了另一种语句,for循环,使一些循环结构变得更加简单,它是一种支持迭代的通用结构,是最有效、最灵活的循环结构。

计算0到100的奇数和偶数的和

public class Demo {
    public static void main(String[] args) {
        int oddsum = 0;
        int evensum = 0;

        for (int i = 0; i <= 100; i++) {
            if(i%2!=0){
                oddsum+=i;
            }else {
                evensum+=i;
            }
        }

        System.out.println("奇数:"+oddsum);
        System.out.println("偶数:"+evensum);
    }
}
           

用while或for循环输出1-1000之前被5整除的数,并每行输出3个

public class Demo {
    public static void main(String[] args) {
        for (int i = 0; i <= 1000; i++) {
            if(i%5==0){
                System.out.print(i+"\t");
            }
            if(i%(5*3)==0){
                System.out.println();   //System.out.print("/n"); 也可以
            }
        }
        //pinrt     输出不会换行
        //pinrtln   输出会换行
    }
}
           

打印九九乘法表

public class Demo {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {        //1 2 3 4 5...
            for (int i1 = 1; i1 <= i; i1++) { //1 1 2 1 2 3 1 2 3 4 1 2 3 4 5...
                System.out.print(i1+"*"+i+"="+i*i1+"\t");       
            }
            System.out.println();
        }
    }
}
           

增强for循环

public class Demo {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};   //定义一个数组 注意:数组的序数是从0开始的

        for (int i = 0; i < 5; i++) {
            System.out.println(numbers[i]);
        }

        for (int x:numbers){        //与上面是一样的
            System.out.println(x);
        }
    }
}
           

break

break在任何循环语句的主题部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)

public class Demo {
    public static void main(String[] args) {
        int i = 0;
        while(i < 100){
            i++;
            System.out.println(i);
            if (i == 30){   //到30就进行一个退出循环,但不会影响后续操作
                break;
            }
        }
        System.out.println(123);    //这里会继续输出
    }
}
           

continue

continue语句用在循环语句中,用于终止某次循环过程,即跳出循环中尚未执行的语句,接着进行下一次是否执行循环的判定。

public class Demo {
    public static void main(String[] args) {
        int i = 0;
        while(i < 100){
            i++;
            if (i % 10 == 0){   //i除以10的余数等于0,都不执行,那么就是10,20....90都跳出这一次循环
                System.out.println();
                continue;
            }
            System.out.print(i);
        }
    }
}
           

关于goto关键字

goto关键字很早就在程序设计语言中出现,尽管goto任是Java的一个保留字,但并未在语言中得到正式适应,Java没有goto,然而,在break和continue这两个关键字的身上,我们任然可以看出一些goto的影子,带标签的break和continue,标签是只后面跟一个冒号的标识符,例如:label:,对Java来说唯一用到标签的地方是在循环语句之前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,他们就会中断存在标签的地方。

public class Demo {
    //不建议使用
    public static void main(String[] args) {
        int count = 0;
        outer:for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i/2; j++) {
                if (i % j == 0){
                    continue outer;
                }
            }
            System.out.println(i);
        }
    }
}