博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 遍历数组的几种方式
阅读量:5058 次
发布时间:2019-06-12

本文共 1911 字,大约阅读时间需要 6 分钟。

本文总结自: 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);}

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

 

转载于:https://www.cnblogs.com/yanze/p/9685310.html

你可能感兴趣的文章
别让安全问题拖慢了 DevOps!
查看>>
UML各种线的含义
查看>>
C#,二分法,BinarySearch()
查看>>
Cache-and-Collect Lifecycle Management in Ninject 2.0
查看>>
洛谷 P2693 [USACO1.3]号码锁 Combination Lock
查看>>
【Linux学习篇】The Windows connection Linux question
查看>>
环境变量
查看>>
8 Python+Selenium操作测试对象
查看>>
BZOJ3887 [Usaco2015 Jan] Grass Cownoisseur 【tarjan】【DP】*
查看>>
今天收获
查看>>
windows phone 商城规则测试工具
查看>>
GDI对象的初始化
查看>>
OSD实现原理介绍(转)
查看>>
Unrequited Love [ZOJ 3601]
查看>>
sqoop实战一 增量导入hdfs
查看>>
七、Null、空以及0的区别
查看>>
什么是反射、javassist和asm(java动态编程)
查看>>
Dom7.js 源码阅读备份
查看>>
聚类算法:K-means 算法(k均值算法)
查看>>
python 中的 re.compile 函数
查看>>