• Java-foreach分析总结


    今天晚上被定积分搞得头昏,拿烟的手,微微颤抖。

    foreach总结:

      foreach是java5的新特性,有人说是抄袭C#的,我也不太清楚,反正会用就行了,主要增强了for循环,在遍历数组和集合上面很方便。

    foreach是for循环的简化版本,但是foreach不能完全取代for循环,然而任何foreach都可以改写为for循环,foreach不是一个关键字,主要就是这个格式,每一个for的意思。

    foreach语句格式:

      for(元素类型type  元素变量value : 遍历对象obj) { 

        引用x的java语句;  

    }

    下面看几段代码,看看foeeach的强大和简便:

      1 package cn.zpoor;
      2 
      3 import java.util.List;
      4 import java.util.ArrayList;
      5 import java.util.Arrays;
      6 
      7 /**
      8  * @author 薛定谔的猫
      9  * foreach遍历数组和集合*/
     10 public class TestArray {
     11 
     12     public void initArray() {
     13         //定义并且初始化一个数组
     14         int arr[] = {2,5,3};
     15         System.out.println("-----排序前的一维数组:");
     16         for(int x:arr) {
     17             System.out.print(x + " ");//foreach循环逐个输入数组元素的值
     18         }
     19         System.out.println();
     20         
     21         //数组冒泡排序
     22         Arrays.sort(arr);
     23         //foreach输出排序之后的数组元素
     24         System.out.println("-----排序后的一维数组:");
     25         for(int x:arr) {
     26             System.out.print(x+" ");
     27         }
     28         System.out.println();
     29     }
     30     
     31     //集合转换成数组
     32     public void listToArray() {
     33         //创建list并且添加元素
     34         List<String> list = new ArrayList<String>();
     35         list.add("1");
     36         list.add("2");
     37         list.add("5");
     38         
     39         //foreach循环输出集合元素
     40         System.out.println("-----foreach输出集合元素");
     41         for(String x:list) {
     42             System.out.println(x+ " ");
     43         }
     44         System.out.println();
     45         
     46         //把ArrayList转换成数组
     47         Object[] obj = list.toArray();
     48         System.out.println("-----foreach输出集合转换而来的数组元素");
     49         for(Object x:obj) {
     50             System.out.print(x.toString()+ " ");//逐个输出数字元素的值
     51         }
     52         System.out.println();
     53     }
     54     
     55     //foreach输出二维数组
     56     public void twoDimensionArray() {
     57         int arr[][] = {{1,2},{3,4}};
     58         System.out.println("-----foreach输出二维数组");
     59         for(int[] x:arr) {
     60             for(int e:x) {
     61                 System.out.print(e+ " ");//逐个输出数组元素,多维数组的本质就是没有多维数组
     62             }
     63         }
     64         System.out.println();
     65     }
     66     
     67     //foreach输出三维数组
     68     public void threeDimensionArray() {
     69         int arr[][][] = {
     70                 {{1,2},{3,4}},
     71                 {{5,6},{7,8}}
     72         };
     73         
     74         System.out.println("-----foreach输出三维数组");
     75         for(int[][] x:arr) {
     76             for(int[] y:x) {
     77                 for(int z:y) {
     78                     System.out.print(z + " ");//三重循环,有点作死
     79                 }
     80             }
     81         }
     82     }
     83     
     84     public static void main(String[] args) {
     85         TestArray test = new TestArray();
     86         test.initArray();
     87         test.listToArray();
     88         test.twoDimensionArray();
     89         test.threeDimensionArray();
     90     }
     91 }
     92 
     93 /*-----排序前的一维数组:
     94 2 5 3 
     95 -----排序后的一维数组:
     96 2 3 5 
     97 -----foreach输出集合元素
     98 1 
     99 2 
    100 5 
    101 
    102 -----foreach输出集合转换而来的数组元素
    103 1 2 5 
    104 -----foreach输出二维数组
    105 1 2 3 4 
    106 -----foreach输出三维数组
    107 1 2 3 4 5 6 7 8 
    108 */

    foreach的局限性:

      如果要是引用数组或者集合的索引,foreach就没法做到了,因为foreach只是遍历一边数组或者集合。

    举个栗子:

     1 package cn.zpoor;
     2 /**
     3  * @author 薛定谔的猫
     4  * foreach的局限性*/
     5 public class TestForeach {
     6     public static void main(String[] args) {
     7         //定义一个数组
     8         int[] arr = new int[4];
     9         System.out.println("输出赋值前定义的数组");
    10         
    11         for(int x:arr) {
    12             System.out.println(x);
    13         }
    14         
    15         //通过索引赋值
    16         System.out.println("给定义的数组赋值");
    17         for(int i = 3;i>0;i--) {
    18             arr[i] = i;
    19         }
    20         
    21         //输出赋值之后的数组
    22         System.out.println("foreach输出赋值之后的一维数组");
    23         for(int x:arr) {
    24             System.out.println(x);
    25         }
    26     }
    27 }
    28 
    29 /*输出赋值前定义的数组
    30 0
    31 0
    32 0
    33 0
    34 给定义的数组赋值
    35 foreach输出赋值之后的一维数组
    36 0
    37 1
    38 2
    39 3
    40 */

    Conclusion:

      foreach是for循环的增强版本,简化了编程,提高了代码的可读性和安全性(数组越界)。在遇到数组或者集合索引的情况下,foreach就不好用了,。而且foreach一般结合泛型使用。

  • 相关阅读:
    移动端适配方案总结
    排序算法
    使用onchange依赖监控文件修改失效
    实现一个可拖拽的div
    在vue中实现两个输入框内容的同步及转换
    简易loading动画的制作
    了解MVC
    Spring Boot使用模板引擎总结
    在配置好log4j后信息log还是在Console中输出
    运行时报java.sql.SQLException: No suitable driver的几种解决办法
  • 原文地址:https://www.cnblogs.com/zpoor/p/7653135.html
Copyright © 2020-2023  润新知