一:使用的形式
1.遍历数组的传统方式
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}
2. 普通循环
for(;;)//空循环体无限循环
System.out.println("fds");
// 建立一个Collection
String[] strings = {"A","B","C","D"};
Collection stringList = java.util.Arrays.asList(strings);
//开始遍历
for (Iterator itr =stringList.iterator();itr.hasNext();){
Object str =itr.next();
System.out.println(str);
}
3.而在Java语言的最新版本――J2SE
1.5中,引入了另一种形式的for循环。借助这种形式的for循环,现在可以用一种更简单地方式来进行遍历的工作。
遍历数组的简单方式
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int i : integers) {
System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
}
这里所用的for循环,会在编译期间被看成是这样的形式:
5:遍历数组集合的简单方式的等价代码
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int 变量名甲 = 0; 变量名甲 < integers.length; 变量名甲++) {
System.out.println(integers[变量名甲]); /* 依次输出“1”、“2”、“3”、“4” */
}
/* 建立一个Collection */String[] strings = {"A","B","C","D"};
Collection list = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Object str : list) {
System.out.println(str); /* 依次输出“A”、“B”、“C”、“D” */
}
6.允许修改状态
Random[] randoms = new Random[]{new Random(3), new Random(4), new Random(5)};
for (final Random r : randoms) {
//System.out.println();
r.setSeed(4); /*将所有Random对象设成使用相同的种子 *,本来上面初始化种子不一样
//返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
/* 种子相同,结果也相同 */
System.out.println(r.nextLong());
}
循环变量的类型可以是要被遍历的对象中的元素的上级类型。例如,用int型的循环变量来遍历一个byte[]型的数组,用Object型的循环变量来遍历一个Collection<
String>(全部元素都是String的Collection)等。
二: 类型相容问题
1.使用和被遍历的对象元素相同类型的循环变量
int[] integers = {1, 2, 3, 4};
for (int i : integers) {
System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
}
Collection< String> strings = new ArrayList< String>();
strings.add("A");
strings.add("B");
strings.add("C");
strings.add("D");
for (String str : strings) {//这里的str不能是int型
System.out.println(str); /* 依次输出“A”、“B”、“C”、“D” */
}
2.循环变量的类型可以是要被遍历的对象中的元素的上级类型。例如,用int型的循环变量来遍历一个byte[]型的数组,用Object型的循环变量来遍历一个Collection< String>(全部元素都是String的Collection)等。
byte[] integers = {1, 2, 3,4};
for (int i : integers) {
System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
}
Collection< String> strings = new ArrayList< String>();
strings.add("A");
strings.add("B");
strings.add("C");
strings.add("D");
for (Object str : strings) {//这里的str不能是int型
System.out.println(str); /* 依次输出“A”、“B”、“C”、“D” */
}
3.使用能和要被遍历的对象中的元素的类型之间自动转换的类型的循环变量
int[] integers = {1, 2, 3, 4};
for (Integer i : integers) {
System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
}