结构化程序设计

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

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

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

一: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());
}
}

三: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穿透

程序控制结构及for循环、foreach循环、迭代器的更多相关文章

  1. for循环,for…in循环,forEach循环的区别

    for循环,for…in循环,forEach循环的区别for循环通关for循环,生成所有的索引下标for(var i = 0 ; i <= arr.length-1 ; i++){ 程序内容 } ...

  2. 增强for循环 -- foreach循环

    1  作用 简化迭代器的书写格式.(注意:foreach循环的底层还是使用了迭代器遍历.) 2  适用范围 如果是实现了Iterable接口的对象或者是数组对象都可以使用foreach循环. 3  格 ...

  3. java 流程执行 循环 foreach循环

    一. if分支 1. 结构  if  else if   else 2.执行原则 if  if  if 结构  会一直去执行()里的判断语句 if else if  else if 结构  只要一条( ...

  4. JavaScript之数组循环 forEach 循环输出数组元素

    var arrayAll = []; arrayAll.push(1); arrayAll.push(2); arrayAll[arrayAll.length] = 3; arrayAll[array ...

  5. 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作--java.util.ConcurrentModificationException

    摘要 foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素. 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体 ...

  6. 有关集合的foreach循环里的add/remove

    转自:Hollis(微信号:hollischuang) 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 1 .foreach循环 ...

  7. foreach循环里不能remove/add元素的原理

    foreach循环 ​    foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素.Java语言从JDK 1.5.0开始引入forea ...

  8. IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素

    从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...

  9. PHP 循环 - For 循环基础讲解

    PHP 循环 - For 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. for 循环 for 循环用于您预先知道脚本需要运行的次数的情况. 语法 for (初始值; 条件; ...

随机推荐

  1. Redis查询&JDBC查询&Hibernate查询方式的效率比较...

    比较三种查询方式查询效率对比...我是用的JavaWeb的方式通过通过JSP页面查询的填写查询的参数...给予反馈.... 整个demo的下载地址:http://files.cnblogs.com/f ...

  2. 【数组】Missing Number

    题目: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is mi ...

  3. protocol buffers的编码原理

    protocol buffers使用二进制传输格式传递消息,因此相比于xml,json来说要轻便很多. 示例:假设定义了一个Message message Test1 { required int32 ...

  4. Catalina.createDigester方法详细理解

    这个方法主要设置(这个方法很重要,贵在理解,虽然还没学过设计模式..) 1.遇到<server>标签时创建StandardServer实例   设置StandardServer类内部的相关 ...

  5. MySQL中date类型的空值0000-00-00和00:00:00

    1.如果mysql中使用了date类型,并且默认值为'0000-00-00', 那么数据库中的'0000-00-00 00:00:00', '0000-00-00', '00:00:00'这三个值是相 ...

  6. mysql 设置隔离级别

    查看隔离级别: mysql> select @@tx_isolation; +-----------------+ | @@tx_isolation | +-----------------+ ...

  7. Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER will not be exported or published

    sometimes when importing a maven project in eclipse, i get the following error: Classpath entry org. ...

  8. Excel文件上传存储到数据库

  9. Node.js数据流Stream之Duplex流和Transform流

    Duplex流一个很好的例子是TCP套接字连接.需要实现_read(size)和_Write(data,encoding,callback)方法. var stream = require('stre ...

  10. JavaScript 函数全局变量定义

    在 JavaScript 中, 作用域 影响着变量的作用范围.在函数外定义的变量具有 全局 作用域.这意味着,具有全局作用域的变量可以在代码的任何地方被调用. 没有使用var关键字定义的变量,会被自动 ...