java疯狂讲义 第四章 流程控制与数组

一、流程控制

package Capter4_流程控制与数组;

public class Process_structure {

    public static void main(String[] args){

        System.out.println("------------------分支结构if、switch--------------");
        String season="夏天";//整数类型、String类型、枚举类型,不能是boolean类型
        switch (season) {
           case "春天":
               System.out.println("春暖花开");
               break;//表达式与case标签的值相等,则执行该case后所有的代码,不再进行条件判断,因此需要有break语句

           case "夏天":
               System.out.println("夏日炎炎");
               break;

           case "秋天":
               System.out.println("秋高气爽");
               break;

           case "冬天":
               System.out.println("冬雪皑皑");
               break;

           default:
               System.out.println("季节输入错误");
        }



        System.out.println("------------------循环结构while、do while、for--------------");

        int count=0;
        //满足条件则执行循环体
        while(count<2){
            System.out.println(count++);
        }


        do{
            System.out.println(count++);
        }while(count<4);
        //do while 先执行循环体再判断,因此无论如何都会执行一次


        for(int i=0;i<2;i++){
            System.out.println(i);
        }
        //for循环判断条件、执行循环体、执行循环迭代条件。如果循环体不能完全执行(如使用continue结束),循环迭代条件会执行
        //while与do while的循环迭代条件紧跟着循环体,如果循环体不能完全执行(如使用continue结束)则循环迭代条件不会执行






        System.out.println("------------------控制循环结构continue、break、return--------------");


        for(int i=0;i<2;i++){
            for(int j=0;j<3;j++){
                System.out.println("i的值是:"+i+","+"j的值是:"+j);
                if(j==1){
                    break;//break结束的是本层的循环
                }
            }
        }
        System.out.println("the first break is off");


        outer:
        for(int i=0;i<2;i++){
            for(int j=0;j<3;j++){
                System.out.println("i的值是:"+i+","+"j的值是:"+j);
                if(j==1){
                    break outer;//结束标记所在的循环
                }
            }
        }

        System.out.println("the break test is off");



        //continue
        for(int i=0;i<3;i++){
            for(int j=0;j<5;j++){
                System.out.println("i的值是:"+i+","+"j的值是:"+j);
                if(j==3){
                    continue;//与break类似,区别在于只是忽略了continue后面语句的执行
                }
                System.out.println("执行continue语句");//即是continue时,不执行该句
            }
        }

        System.out.println("the first continue is off");


        outer:
        for(int i=0;i<3;i++){
            for(int j=0;j<5;j++){
                System.out.println("i的值是:"+i+","+"j的值是:"+j);
                if(j==3){
                    continue outer;//忽视标签所指定的循环所剩下的语句
                }
            }
            System.out.println("执行continue语句");
        }

        System.out.println("the continue test is off");



        //return
        //return不专门用于结束循环,return的功能是结束一个方法,return直接结束整个方法,不管处于多少层循环之内
        for(int i=0;i<3;i++){
            for(int j=0;j<5;j++){
                System.out.println("i的值是:"+i+","+"j的值是:"+j);
                if(j==1){
                    return;
                }
                System.out.println("未执行return语句");
            }
        }


    }

}

二、数组

package Capter4_流程控制与数组;

import java.util.Arrays;

import Reference_class.Person;

public class Array_type {

    public static void main(String[] args){

        System.out.println("------------------基本类型数组初始化--------------");
        //静态初始化与动态初始化
        //数组初始化完成后,在内存的空间就会固定下来,因此数组的长度不可变。即使将数组清空、其空间仍然保留下来
        int[] a1={1,2,3,4};
        int[] a2=new int[4];

        System.out.println("------------------引用类型数组初始化--------------");
        Person[] students = new Person[2];
        Person zhang = new Person();
        zhang.setAge(15);
        zhang.setHeight(158);

        Person lee = new Person();
        lee.setAge(15);
        lee.setHeight(158);

        students[0]=zhang;
        students[1]=lee;

        //引用变量students、zhang、lee位于方法的栈区,其实际的元素对象位于堆区。
        //lee、students[1]指向同一个堆内存,因此共享操作
        lee.info();
        students[1].info();


        System.out.println("------------------JAVA 8 Arrays工具类--------------");
        int[] a = {3,-4,25,16,30,18};
        int[] b = Arrays.copyOf(a, a.length);
        System.out.println( Arrays.equals(a, b ) ? "两数组长度一致,对应元素相等":"两数组不相等");
        Arrays.fill(b, 0,1,1);//范围为左闭右开的形式
        Arrays.sort(b);
        System.out.println(Arrays.toString(b));

        System.out.println("------------------JAVA 8 Arrays并行处理工具类--------------");
        Arrays.parallelSort(a);
        Arrays.parallelPrefix(a, (int x,int y)->x*y );
        //一个XxxBinaryOperator函数式接口类,left表示数组中前一个索引(计算第一个元素时left=1),right表示数组中的当前索引
        //这些方法都是直接对数组本身的操作,也加入操作的元素所在的范围
        Arrays.parallelSetAll(a, (int x)->(x/5));//设置数组元素的值
        //spliterator转化为spliterator对象



    }

}

猜你喜欢

转载自blog.csdn.net/qq_41357131/article/details/81273586