J2SE 1.5 fournit une autre forme de boucle for. Avec cette forme de boucle for, les objets de types tels que les tableaux et les collections peuvent être parcourus de manière plus simple. Cet article présente des manières spécifiques d'utiliser cette boucle, explique comment définir vos propres classes pouvant être parcourues de cette manière et explique certains problèmes courants liés à ce mécanisme.
Dans un programme Java, lorsque vous souhaitez "traiter" - ou "parcourir" - les éléments d'un tableau ou d'une collection un par un, vous utiliserez généralement une boucle for pour y parvenir (bien sûr, utilisez Autres Différents types de boucles ne sont pas impossibles, mais je ne sais pas si c'est parce que la longueur du mot for est relativement courte, ou parce que la signification du mot for est plus adaptée à ce type d'opération. la boucle for est plus couramment utilisée que les autres boucles).
Pour parcourir des tableaux, cette boucle s'écrit généralement comme ceci :
Listing 1 : Manière traditionnelle de parcourir des tableaux
/* 建立一个数组 */ int[] integers = {1, 2, 3, 4}; /* 开始遍历 */ for (int j = 0; j 913783db535a273cf639c9173724fea3 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>