1. Enhanced for 개요
Foreach 루프라고도 하는 향상된 for 루프는 배열 및 컨테이너(컬렉션 클래스)를 탐색하는 데 사용됩니다. foreach 루프를 사용하여 배열 및 컬렉션 요소를 순회하는 경우 배열 및 컬렉션 길이를 가져올 필요가 없으며 인덱스를 기반으로 배열 요소 및 컬렉션 요소에 액세스할 필요가 없으므로 효율성이 크게 향상되고 코드가 훨씬 단순해집니다. .
2. 오라클 공식 홈페이지 설명
그러면 언제 for-each 루프를 사용해야 할까요? 언제든지 괜찮습니다. 이것은 정말 코드를 아름답게 만듭니다. 불행히도 모든 곳에서 사용할 수는 없습니다. 예를 들어 메소드 제거와 같은 경우를 고려하십시오. 현재 요소를 제거하려면 프로그램이 반복자에 액세스해야 합니다. for-each 루프는 반복자를 숨기므로 삭제 함수를 호출할 수 없습니다. 따라서 for-each 루프는 요소 필터링에 작동하지 않습니다. 컬렉션이나 배열을 반복할 때 요소를 교체해야 하는 루프도 적용할 수 없습니다. 마지막으로 여러 컬렉션 반복에 걸쳐 병렬 루프에 사용하는 데 적합하지 않습니다. 설계자는 이러한 함정을 인식하고 이러한 상황을 피하기 위해 의식적으로 깨끗하고 단순한 구조를 설계해야 합니다. 관심이 있으시면 공식 웹사이트에서 API를 보실 수 있습니다. 공식 웹사이트에서 API를 찾는 방법을 모르신다면 클릭하여 공식 웹사이트를 열어 API 방법을 확인하세요.
3.
for(集合或者数组元素的类型 变量名 : 集合对象或者数组对象){ 引用变量名的java语句; }
형식이 향상되었습니다. 콜론(:)이 표시되면 "Come in"이라고 읽습니다. 위 루프는 "C의 각 TimerTask 요소를 탐색합니다."라고 읽습니다. for-each 구문은 제네릭과 완벽하게 결합됩니다. 나머지 혼란을 제거하면서 모든 유형의 보안을 유지합니다. 반복자를 선언할 필요가 없기 때문에 이에 대한 일반 선언을 제공할 필요가 없습니다. (컴파일러가 이미 뒤에서 수행했기 때문에 신경 쓸 필요가 없습니다.)
간단한 경험:
1. 🎜>
package cn.jason01; //增强for遍历数组 public class ForTest01 { public static void main(String[] args) { int[] array={1,2,3}; for(int element: array){ System.out.println(element); } } }
package cn.jason01; import java.util.ArrayList; public class ForTest { public static void main(String[] args) { // 泛型推断,后面可以写可以不写String ArrayList<String> array = new ArrayList(); array.add("a"); array.add("b"); array.add("c"); for (String string : array) { System.out.println(string); } } }
package cn.jason01; import java.util.ArrayList; import java.util.Iterator; /** * 增强for底层原理 * * @author cassandra * @version 1.1 */ public class ForTest { public static void main(String[] args) { // 泛型推断,后面可以写可以不写String.规范一些是要写上的。 ArrayList<String> array = new ArrayList(); // 添加元素 array.add("a"); array.add("b"); array.add("c"); // 增强for实现 System.out.println("----enhanced for----"); for (String string : array) { System.out.println(string); } // 反编译之后的效果,也就是底层实现原理 System.out.println("---reverse compile---"); String string; for (Iterator iterator = array.iterator(); iterator.hasNext(); System.out.println(string)) { string = (String) iterator.next(); } // 迭代器实现 System.out.println("------Iterator------"); for (Iterator<String> i = array.iterator(); i.hasNext(); System.out.println(i.next())) { } // 普通for实现 System.out.println("-----general for-----"); for (int x = 0; x < array.size(); x++) { System.out.println(array.get(x)); } } }
package cn.jason05; import java.util.ArrayList; import java.util.List; /** * 增强for用法 * * @author cassandra */ public class ForDemo { public static void main(String[] args) { // 遍历数组 int[] arr = { 1, 2, 3, 4, 5 }; for (int x : arr) { System.out.println(x); } } }
package cn.jason05; import java.util.ArrayList; import java.util.List; /** * 增强for用法 * * @author cassandra */ public class ForDemo { public static void main(String[] args) { // 遍历集合 ArrayList<String> array = new ArrayList<String>(); array.add("hello"); array.add("world"); array.add("java"); for (String s : array) { System.out.println(s); } // 集合为null,抛出NullPointerException空指针异常 List<String> list = null; if (list != null) { for (String s : list) { System.out.println(s); } } // 增强for中添加或修改元素,抛出ConcurrentModificationException并发修改异常 for (String x : array) { if (array.contains("java")) array.add(1, "love"); } }
3. 제네릭의 완벽한 조합 및 향상된 기능
참고: 제네릭과 완벽하게 결합되어야 하며, 그렇지 않으면 수동으로 아래쪽으로 변환해야 합니다
1. 일반 효과가 없으며 for
학생 수업
package cn.jason01; public class Student { private String name1; private String name2; public Student() { super(); } public Student(String name1, String name2) { super(); this.name1 = name1; this.name2 = name2; } public String getName1() { return name1; } public void setName1(String name1) { this.name1 = name1; } public String getName2() { return name2; } public void setName2(String name2) { this.name2 = name2; } }
테스트 코드<🎜를 강화하는 데 사용할 수 없습니다. >
package cn.jason01; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Test02 { public static void main(String[] args) { // 创建集合1 List list1 = new ArrayList(); list1.add("a"); list1.add("b"); list1.add("c"); // 创建集合2 List list2 = new ArrayList(); list2.add("d"); list2.add("e"); list2.add("f"); // 创建集合三 List list3 = new ArrayList(); // 遍历第一和第二个集合,并添加元素到集合三 for (Iterator i = list1.iterator(); i.hasNext();) { // System.out.println(i.next()); String s = (String) i.next(); for (Iterator j = list2.iterator(); j.hasNext();) { // list2.add(new Student(s,j.next())); String ss = (String) j.next(); list3.add(new Student(s, ss)); } } // 遍历集合三,并输出元素 Student st; for (Iterator k = list3.iterator(); k.hasNext(); System.out .println(new StringBuilder().append(st.getName1()).append(st.getName2()))) { st = (Student) k.next(); } } }
package cn.jason01; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 增强for和泛型完美结合 * * @author cassandra */ public class Test03 { public static void main(String[] args) { // 创建集合1 List<String> list1 = new ArrayList<String>(); list1.add("a"); list1.add("b"); list1.add("c"); // 创建集合2 List<String> list2 = new ArrayList<String>(); list2.add("d"); list2.add("e"); list2.add("f"); // 创建集合三 List<Student> list3 = new ArrayList<Student>(); //// 遍历第一和第二个集合,并添加元素到集合三 for (String s1 : list1) { for (String s2 : list2) { list3.add(new Student(s1, s2)); } } // 遍历集合三,并输出元素 for (Student st : list3) { System.out.println(new StringBuilder().append(st.getName1()).append(st.getName2())); } } }
package cn.jason05; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /** * 这是List集合遍历四种方法 * * @author cassandra */ public class ForDemo01 { public static void main(String[] args) { // 创建集合 List<String> list = new ArrayList<String>(); list.add("hello"); list.add("world"); list.add("java"); // 方法1,Iterator迭代器遍历 Iterator<String> i = list.iterator(); while (i.hasNext()) { String s = i.next(); System.out.println(s); } // 方法2,ListIterator迭代器遍历集合 ListIterator<String> lt = list.listIterator(); while (lt.hasNext()) { String ss = lt.next(); System.out.println(ss); } // 方法3,普通for遍历集合 for (int x = 0; x < list.size(); x++) { String sss = list.get(x); System.out.println(sss); } // 方法4,增强for遍历集合 for (String ssss : list) { System.out.println(ssss); } } }
rree
7. 요약1. > 적용 가능성: 컬렉션 및 배열 순회에 적합합니다. 제한 사항: ① 기본 레이어가 반복기이므로 컬렉션은 null일 수 없습니다. ②모서리 표시를 설정할 수 없습니다. ③반복자가 숨겨져 있으므로 컬렉션 순회 시 컬렉션을 수정(추가 또는 삭제)할 수 없습니다. 2. 새로운 기능을 활용하려면 컬렉션에서 for와 generics의 조합을 강화하세요. 3. 공식 웹사이트의 새로운 기능을 확인하는 것은 매우 중요합니다. 그것이 무엇인지 알기 위해서는 그 이유도 마음속으로 이해해야만 자유롭게 사용할 수 있습니다. Java의 새로운 기능인 for 루프의 가장 완벽한 사용법에 대한 위의 요약은 모두 편집자가 공유한 내용이므로 참고가 되기를 바랍니다. PHP 중국어 웹사이트. 새로운 Java 기능인 for 루프의 가장 완전한 사용법 요약에 대한 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!