zoukankan      html  css  js  c++  java
  • java 遍历数组的几种方式

    本文总结自: https://www.cnblogs.com/hellochennan/p/5373186.html

    1. 传统方式

    非常简单的for循环

    int[] a = {1, 2, 3, 4};
     for (int j = 0; j < a.length; j++) {
         int i = a[j];
         System.out.println(i);
     }

    2. for-each循环(J2SE 1.5)

    语法: for (循环变量类型 循环变量名称 : 被遍历的对象)  循环体

    eg:

    int[] a = {1, 2, 3, 4};
    for (int i : a) {
         System.out.println(i); 
    }

    为什么不用foreach和in,而是for、: ?

    这是为了避免因为引入新的关键字,造成兼容性方面的问题。

    如何防止在循环体中修改循环变量?

    可通过将循环变量设为final,这样如果对其进行修改会在编译时报错

    int[] a = {1, 2, 3, 4};
     for (final int i : a) {
         i = i / 2; /* 编译时出错 */
     }

    注意: 只是禁止了对循环变量直接赋值。如果给循环变量的属性赋值,或者调用能让循环变量的属性变化的方法,是不被禁止的

    ----------------------------------------------------------------------------------------------------------------

    类型相容问题

    a、循环变量的类型可以是被遍历的对象的上级类型

    eg: 

    String[] strings = {"A", "B", "C", "D"};
    Collection< String> list = java.util.Arrays.asList(strings);
    for (Object str : list) {
    System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */
    }

    b、循环变量的类型可以和要被遍历的对象的类型之间存在能自动转换的关系,即: 

    J2SE 1.5中包含了“Autoboxing/Auto-Unboxing”的机制,允许编译器在必要的时候,自动在基本类型和它们的包裹类(Wrapper Classes)之间进行转换

    eg:

    int[] integers = {1, 2, 3, 4};
    for (Integer i : integers) {
       System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
    }

    ---------------------------------------------------------------------------------------------------------------------------------------------

    3. 转换为Collection子类用迭代器遍历

    eg:

    int[] a= {1,2,3};
    List b= a.AsList(a);
    Iterator iter= b.iterator();
    while(iter.hasNext()){ Object pre= iter.next(); System.out.println(pre); }

    int[] a= {1,2,3};
    List b= a.AsList(a);
    for(Iterator iter = b.iterator();iter.hasNext();){
    Object pre= iter.next();
    System.out.println(pre);
    }

    Collection子类也能使用for-each的方式遍历,即:

    int[] a= {1,2,3};
    List b= a.AsList(a);
    for(Object i: b){
        System.out.println(i);
    }

    ---------------------------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    【java】定时任务@Scheduled
    20180513 实参 形参 数组
    20180513 实参 形参
    20180513 数组 实参 形参
    <转载>二维数组回形遍历
    20180318 代码错题(8)
    20180318 代码错题(7)
    20180318 代码错题(6)
    20180318 代码错题(5)
    20180318 bit置0
  • 原文地址:https://www.cnblogs.com/yanze/p/9685310.html
Copyright © 2011-2022 走看看