J2SE 1.5는 또 다른 형태의 for 루프를 제공합니다. 이러한 형태의 for 루프를 사용하면 배열 및 컬렉션과 같은 유형의 객체를 더 간단한 방법으로 탐색할 수 있습니다. 이 기사에서는 이 루프를 사용하는 구체적인 방법을 소개하고, 이러한 방식으로 탐색할 수 있는 고유한 클래스를 정의하는 방법을 설명하고, 이 메커니즘의 몇 가지 일반적인 문제를 설명합니다.
Java 프로그램에서 배열이나 컬렉션의 요소를 하나씩 "처리" 또는 "순회"하려는 경우 일반적으로 이를 달성하기 위해 for 루프를 사용합니다(물론 다음을 사용합니다). 기타 다양한 형태의 루프가 불가능한 것은 아니지만, for라는 단어의 길이가 상대적으로 짧아서인지, 아니면 for라는 단어의 의미가 이런 연산에 더 적합하기 때문인지는 모르겠습니다. for 루프는 다른 루프보다 더 일반적으로 사용됩니다.
배열을 순회하는 경우 이 루프는 일반적으로 다음과 같이 작성됩니다.
목록 1: 배열을 순회하는 전통적인 방법
/* 建立一个数组 */ int[] integers = {1, 2, 3, 4}; /* 开始遍历 */ for (int j = 0; j fac28b92853d3b057118be4b9752b871 strings = new ArrayList10561f52a538bad7dc0ea5defc38baab();<br> strings.add("A");<br> strings.add("B");<br> strings.add("C");<br> strings.add("D");<br> for (String str : integers) {<br> System.out.println(str); /* 依次输出“A”、“B”、“C”、“D” */<br> }<p><br></p><p>循环变量的类型可以是要被遍历的对象中的元素的上级类型。例如,用int型的循环变量来遍历一个byte[]型的数组,用Object型的循环变量来遍历一个Collection10561f52a538bad7dc0ea5defc38baab(全部元素都是String的Collection)等。</p><p>清单11:使用要被遍历的对象中的元素的上级类型的循环变量<br> String[] strings = {"A", "B", "C", "D"};<br> Collection10561f52a538bad7dc0ea5defc38baab list = java.util.Arrays.asList(strings);<br> for (Object str : list) {<br> System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */<br> }</p><p>循环变量的类型可以和要被遍历的对象中的元素的类型之间存在能自动转换的关系。J2SE 1.5中包含了“Autoboxing/Auto-Unboxing”的机制,允许编译器在必要的时候,自动在基本类型和它们的包裹类(Wrapper Classes)之间进行转换。因此,用Integer型的循环变量来遍历一个int[]型的数组,或者用byte型的循环变量来遍历一个Collection9a55b736d1e9b58d26b48dae6facfa31,也是可行的。</p><p>清单12:使用能和要被遍历的对象中的元素的类型自动转换的类型的循环变量<br> int[] integers = {1, 2, 3, 4};<br> for (Integer i : integers) {<br> System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */<br> }</p><p>注意,这里说的“元素的类型”,是由要被遍历的对象的决定的――如果它是一个Object[]型的数组,那么元素的类型就是Object,即使里面装的都是String对象也是如此。</p><p>可以限定元素类型的Collection</p><p>截至到J2SE 1.4为止,始终无法在Java程序里限定Collection中所能保存的对象的类型――它们全部被看成是最一般的Object对象。一直到J2SE 1.5中,引入了“泛型(Generics)”机制之后,这个问题才得到了解决。现在可以用Collectionb32f285eaba7a6752dff0bc229700674来表示全部元素类型都是T的Collection。</p><p>更多Java for循环的几种用法分析相关文章请关注PHP中文网!</p>