Java 数组的遍历访问(普通循环,增强for循环)
普通循环
首先我们要知道数组元素下标的合法区间:[0, length-1](即从0开始到数组长度减一)。我们可以通过下标来遍历数组中的元素,遍历时可以读取或修改元素的值。
下面的例子展示了如何设置和读取数组元素的值:
public class Test {
public static void main(String[] args) {
int[] a = new int[4];
// 初始化数组元素的值
for (int i = 0; i < a.length; i++) {
a[i] = 100 * i;
}
// 读取元素的值
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
增强 for 循环
增强for循环(foreach)是 JDK1.5 新增加的功能,专门用于读取数组或集合中所有的元素,即对数组进行遍历。例:
public class Test {
public static void main(String[] args) {
String[] strings = {"aaa", "bbb", "ccc", "ddd"};
for (String str : strings) {
System.out.println(str);
}
}
}
注:仅适合于遍历,不可修改元素的值,不涉及有关索引(下标)的操作。
增强 for 循环使用起来比较方便,代码也比较简单,如果只是操作数组或集合中的元素而不使用索引的话,建议使用增强 for 循环;如果需要使用索引进行其它操作的话,建议使用普通循环。
普通循环和增强 for 循环的区别
- 增强 for 循环必须有被遍历的目标(如数组或集合)。
- 普通 for 循环遍历数组的时候需要索引。
- 增强 for 循环不能获取下标,所以遍历数组时最好使用普通for循环。
关于性能:
- 对于非集合类(没有实现 Iterable 接口)的数组遍历,增强 for 循环和普通循环遍历原理相同,效率相同。
- 对于集合类(实现了 Iterable 接口),增强 for 循环的遍历其本质就是迭代器 Iterator 的遍历,和普通循环遍历相比,各自有自己适用的场景,比如说普通循环比较适合 List 类(数组类)遍历通过下标查找数据的,而增强 for 循环则比较适合链表结构的集合的遍历。