• 程序控制结构及for循环、foreach循环、迭代器


    结构化程序设计

    三种基本控制结构:顺序结构、选择结构、循环结构。

    在这种思想的指导下,发展出了面向过程编程方式。面向过程编程的核心是算法+数据结构。算法可以用顺序、选择、循环这三种基本控制结构来实现。数据结构是指数据以及其存取方式。

    面向对象编程,对象+消息传递。

    一:fro循环

    1、for循环执行过程:

    (1):为第一个引号前的变量赋值
    (2):检查判断条件为真为假
    (3):真,执行;假,退出
    (4):第二个引号后面的语句执行
    (5):检查判断条件为真为假

    2、每一部分都不是必须的:

    public class forDemo {
        public static void main(String[] args) {
            for (;;) {
                ;
            }
        }
    }
    //上面的写法没错

    3、还可以这样写

        public static void main(String[] args) {
            for (int i=0; i<100; i++,i++) {
                
            }
        }

    4、带标签的for循环

        public static void main(String[] args) {
            for (int i=0; i<2; i++) {
                System.out.println("我是最外层");
                middle:
                for(int j=0; j<2; j++) {
                    System.out.println("我是中间层");
                    for (int k=0; k<2; k++) {
                        System.out.println("我是最里层");
                        break middle;
                    }
                }
            }
        }

      //运行结果:
      //我是最外层
      //我是中间层
      //我是最里层
      //我是最外层
      //我是中间层
      //我是最里层

    二、foreach循环

    传统的for循环可以遍历数组、集合,for 循环里可以使用容器自身的方法对容器内元素操作。

    在jdk1.5之后,提供了foreach循环,所有的foreach均可被普通for循环代替。

    foreach 为遍历数组、集合框架内的元素提供了很大便利;但它会丢失元素的下标信息,虽然也可以使用计数器来完成对特定下标元素操作,但这样做不够优雅。所以,当遍历集合或数组时,如果需要集合或数组元素的下标,推荐使用传统for循环方式。

    foreach迭代集合,底层是迭代器,因为迭代器锁定了当前容器,所以不可以使用容器自身的方法对容器里的元素进行操作。

    使用迭代器对容器进行操作,不可以使用容器自身的方法对容器元素进行操作。

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class Demo {
        public static void main(String[] args) {
            List<Integer> list = new ArrayList<>();
            list.add(1); list.add(2); list.add(3);list.add(4);list.add(5);
    //         使用迭代器可以删除容器内的元素
            Iterator<Integer> iterator = list.iterator();
            while (iterator.hasNext()) {
                if ("1".equals(iterator.next()+"")) {
                    iterator.remove();
                }
            }
    //        使用for循环、容器方法也可以删除容器内的元素
    //        for (int i=0; i < 5; i++) {
    //            list.remove(0);
    //        }
    //        使用foreach会报错
    //        for (Integer i : list) {
    //            list.remove(0);
    //        }
            System.out.println(list.size());
        }
    }
    View Code

    三:switch

    public class Demo {
        public static void main(String[] args) {
            int i = 1, j = 3;
            switch (i) {//输出1234
            case 1:
                System.out.println(1);
            case 2:
                System.out.println(2);
            case 3:
                System.out.println(3);
            case 4:
                System.out.println(4);
            }
            switch (j) {//输出34
            case 1:
                System.out.println(1);
            case 2:
                System.out.println(2);
            case 3:
                System.out.println(3);
            case 4:
                System.out.println(4);
            }
        }
    }
    小心case穿透
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            while (true) {
                System.out.println("请输入'0——10'的一个数字");
                String input = scanner.nextLine();
                if ("-1".equals(input)) {
                    scanner.close();
                    System.err.println("程序退出!");
                    break;
                }
                switch (input) {
                case "1":
                case "3":
                case "5":
                case "7":
                case "9":
                    System.out.println("您输入的是一个单数");
                    System.out.println("试着输入一个双数");
                    //break;
            /* 假如把这个break删掉,
             * 如果输入一个单数,也会输出下面的两行;
             * 如果输入一个双数,只是输出下面的两行;
             * 如果输入一个100,只会输出"请输入'0——10'的一个数字";
             */
                    
                case "0":
                case "2":
                case "4":
                case "6":
                case "8":
                case "10":
                    System.out.println("您输入的是一个双数");
                    System.out.println("试着输入一个单数");
                }
            }
        }
    利用case穿透
  • 相关阅读:
    关于程序员的段子,你能读懂几个?网友:你若全对算我输!
    【C++学习笔记】超详细C++注释的使用方法,不赶紧收藏就错过啦!
    做编程容易短命?衷心建议:三十六计,“保命”要紧
    【C++学习笔记】C++异常处理!你绝对不能错过的干货!
    Linux Socket套接字出现问题怎么办?教你5个方法“有备无患”
    【致敬伟大的程序员】写代码写进国博,这么牛的还有谁?
    重要的事情说三遍:局部变量一定要初始化!你做到了吗?
    自我介绍
    .NET应用程序中嵌入VB6表单
    在VB6中使用。net DLL
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/6754374.html
Copyright © 2020-2023  润新知