1. 개요를 위해 향상되었습니다
Foreach 루프라고도하는 루프를 위해 향상된 배열 및 컨테이너 (컬렉션 클래스)에 사용됩니다. 어레이 및 수집 요소를 통해 Foreach를 사용하는 경우 배열 및 수집 길이를 얻을 필요가 없으며 인덱스를 기반으로 배열 요소 및 수집 요소에 액세스 할 필요가 없으므로 효율성이 크게 향상되고 코드가 훨씬 간단합니다.
2. Oracle 공식 웹 사이트의 설명
그렇다면 언제부터 시작 루프를 사용해야합니까? 언제든지. 코드가 정말 아름답습니다. 불행히도, 당신은 어디에서나 사용할 수 없습니다. 예를 들어 Expurgate 방법을 고려하십시오. 이 프로그램은 현재 요소를 제거하려면 반복자에 대한 액세스가 필요합니다. for-each 루프는 반복기를 숨기므로 제거를 호출 할 수 없습니다. 따라서 For-E-Each 루프는 필터링에 사용할 수 없습니다. 마찬가지로 목록이나 배열에서 요소를 교체 해야하는 루프에는 사용할 수 없습니다. 마지막으로 여러 컬렉션을 병렬로 반복 해야하는 루프에는 사용할 수 없습니다. 이러한 단점은 디자이너들에 의해 알려졌으며, 대부분의 사례를 다루는 깨끗하고 간단한 구조를 가지고 의식을 결정했습니다.
그렇다면 언제부터 시작 루프를 사용해야합니까? 언제든지 괜찮습니다. 이것은 실제로 코드를 아름답게합니다. 불행히도, 당신은 어디서나 사용할 수 없습니다. 예를 들어 삭제 방법을 고려하십시오. 현재 요소를 제거하려면 프로그램이 반복자에 액세스해야합니다. for-each 루프는 반복기를 숨기므로 삭제 함수를 호출 할 수 없습니다. 따라서, 각각의 루프는 필터링 요소에 적합하지 않습니다. 또한 컬렉션이나 배열을 통해 반복 할 때 요소를 교체 해야하는 루프는 적용되지 않습니다. 마지막으로, 여러 컬렉션 반복에서 병렬 루프 사용에는 적합하지 않습니다. 디자이너들은 이러한 결함을 이해하고 의식적으로 이러한 상황을 피하기 위해 깨끗하고 간단한 구조를 설계해야합니다. 관심이 있으시면 공식 웹 사이트의 API를 볼 수 있습니다. 공식 웹 사이트에서 API를 찾는 방법을 모르는 경우 공식 웹 사이트를 열려면 API 방법을보십시오.
3. 형식을 향상시킵니다
for (collection 또는 배열 요소의 변수 이름을 입력하십시오 : 수집 객체 또는 배열 객체) {java 문을 참조하는 java statement;}공식 웹 사이트 설명 :
for (Timertask T : C)
T.cancel ();
콜론을 볼 때 (:) "in"으로 읽으십시오. 위의 루프는 "각각의 타이머 스 태스크 t에 대해"로 읽습니다. 보시다시피, for-e-each 구조는 제네릭과 아름답게 결합됩니다. 나머지 혼란을 제거하면서 모든 유형 안전을 유지합니다. 반복자를 선언 할 필요가 없기 때문에 일반적인 선언을 제공 할 필요가 없습니다. (컴파일러는 등 뒤에서이 작업을 수행하지만 자신을 걱정할 필요는 없습니다.)
일반적인 의미는 다음과 같습니다.
결장을 보면 (:), "들어 오세요"라고 읽습니다. 위의 루프는 "C. 보시다시피, 각각의 구조는 제네릭과 완벽하게 결합되어 있습니다. 남은 혼란을 제거하면서 모든 유형의 보안을 유지합니다. 반복자를 선언 할 필요가 없기 때문에 일반적인 선언을 제공 할 필요가 없습니다. (컴파일러가 당신 뒤에 그것을했는데, 당신은 그것을 신경 쓰지 않아도됩니다.)
간단한 경험 :
1. 트래버스 어레이에 대한 향상
패키지 CN.JASON01; // Traversal Array 공개 클래스 Fortest01 {public static void main (String [] args) {int [] array = {1,2,3}; for (int element : array) {system.out.println (요소); }}}2. 트래버스 컬렉션에 대한 향상
패키지 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 (문자열 문자열 : 배열) {system.out.println (문자열); }}}4. For의 기본 원리를 향상시킵니다
코드를 먼저보십시오
패키지 cn.jason01; import java.util.arraylist; import java.util.iterator;/** * 기본 원리를 위해 강화 * * @author cassandra * @version 1.1 */public class fortest {public static void main (string [] args) {// 일반적인 inference, 나중에 쓸 수 있습니다. 일부 사양을 작성해야합니다. ArrayList <string> array = new ArrayList (); // 요소 array.add ( "a"); array.add ( "b"); array.add ( "c"); uplance system.out.println ( "---- Enhatned for ----"); (string : array) {strint. 즉, 기본 구현 원리 시스템 .out.println ( "--- 리버스 컴파일 ----"); 문자열 문자열; for (iterator iterator = array.iterator (); iterator.hasnext (); system.out.println (strint)) {String = (string) iterator.next ();} // Iterator Amments System.out.println ( "------------"); for (iterator <string> i = array.iterator (); i.hasnext (); system.out.println (i.next ())) {} // system.out.println ( "----------"); for (int x = 0; x <array.size (); x ++) {system.out.println (array.get (x));}}}위의 코드에서, 우리는 기본 레이어가 반복자에 의해 구현되고 실제로 반복기를 숨기고 있으므로 반복기를 만들지 않고 자연 코드가 훨씬 간단하다는 것을 알 수 있습니다. 또한 코드를 줄이고 컬렉션과 어레이를 가로 지르는 컬렉션 및 어레이를 촉진하며 효율성을 향상시키는 것입니다.
참고 : 가죽 반복자의 향상, 컬렉션 및 배열을 가로 지르는에 향상을 사용할 때는 먼저 널 여부를 결정해야합니다. 그렇지 않으면 널 포인터 예외가 발생됩니다. 그 이유는 매우 간단합니다. 기본 레이어는 배열 또는 수집 객체를 사용하여 iterator () 메소드를 호출하여 반복기를 생성해야합니다 (반복자 반복기는 인터페이스이므로 서브 클래스로 구현해야 함). 그것이 null이라면, 예외가 확실히 던져 질 것입니다.
5
1. 적용 가능성
수집 및 배열의 횡단에 적합합니다.
2. 제한 사항 :
① 기본 레이어가 반복기이기 때문에 세트는 널가 될 수 없습니다.
② 반복자가 숨겨져 있으므로 컬렉션을 가로 질러 컬렉션을 수정 (추가 및 삭제) 할 수 없습니다.
cannot 세트 각도 마크.
6. 향상 사용에 대한 자세한 설명
1. 배열의 향상된 사용
패키지 cn.jason05; import java.util.arraylist; import java.util.list;/** * 사용을 위해 강화 * * @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); }}}2. 컬렉션의 사용을 향상시킵니다
패키지 cn.jason05; import java.util.arraylist; import java.util.list;/** * 사용을 위해 강화 * * @author cassandra */public class fordemo {public static void main (string [] args] <// arraylist> array = new arraylist <string> (); Array.add ( "Hello"); Array.add ( "World"); Array.add ( "Java"); for (string s : array) {system.out.println (s); } // 세트가 null이고 NullPointerException을 던지십시오 null 포인터 예외 목록 <string> list = null; if (list! = null) {for (문자열 s : list) {system.out.println (s); }} // 요소의 추가 또는 수정을 향상 시키십시오. }}3. 제네릭과 향상의 완벽한 조합
참고 : 제네릭과 완벽하게 결합되어야합니다. 그렇지 않으면 수동으로 아래쪽으로 변환해야합니다.
1. 일반적인 효과가 없으며 향상을 사용할 수 없습니다
학생 수업
패키지 CN.JASON01; 공개 클래스 학생 {private String name1; 개인 문자열 이름 2; 공개 학생 () {super (); } 공개 학생 (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; }}테스트 코드
패키지 cn.jason01; import java.util.arraylist; import java.util.iterator; import java.util.list; public class test02 {public static void main (String [] args) {// 세트 1 목록 1 = new arrayList (); List1.add ( "a"); List1.add ( "b"); List1.add ( "C"); // 세트 만들기 2 목록 목록 2 = new ArrayList (); list2.add ( "d"); list2.add ( "e"); list2.add ( "f"); // 세트 세트 작성 세 목록 목록 3 = new ArrayList (); // 첫 번째 및 두 번째 세트를 가로 지르고 (iterator i = list11.iterator (); i.hasnext ();) {// system.out.println (i.next ()); 문자열 s = (string) i.next (); for (iterator j = list2.terator (); j.hasnext ();) {// list2.add (신입 문자열 ss = (string) j.next (); list3.add (신입생 (s, ss)); }} // 세트 3을 가로 지르고 요소 학생 st를 출력합니다. for (iterator k = list3.erator (); k.hasnext (); system.out .println (new StringBuilder (). Append (st.getname1 ()). Append (st.getname2 ())) {st = (Student) k.next (); }}}위의 코드가 주석의 두 줄을 제거하면 컬렉션이 요소의 유형을 선언하지 않기 때문에 프로그램이 오류를보고합니다. 반복자는 자연스럽게 어떤 유형인지 알지 못합니다. 따라서 제네릭이 없으면 아래쪽으로 변환해야합니다. 향상되지 않은 반복자 만 사용할 수 있습니다.
2. 제네릭 및 향상
위의 코드를 수정하십시오
패키지 cn.jason01; import java.util.arraylist; import java.util.iterator; import java.util.list;/** * for and genics * * @author cassandra */public class test03 {public static void main (] arg <list1)의 완벽한 조합을 향상시킵니다. List1.add ( "a"); List1.add ( "b"); List1.add ( "C"); // 세트 생성 2 목록 <string> list2 = new ArrayList <string> (); list2.add ( "d"); list2.add ( "e"); list2.add ( "f"); // 세트 세트 작성 세 목록 작성 <tudent> list3 = new ArrayList <tudent> (); //// 첫 번째 및 두 번째 세트를 가로 지르고 (문자열 s1 : list1) {for (문자열 s2 : list2) {list3.add (new student (s1, s2)); }} // (Student st : list3) {system.out.println (new StringBuilder (). Append (st.getName1 ()). Append (St.GetName2 ()))에 대한 세트 3 및 출력 요소를 가로지 릅니다. }}}4. 목록 수집의 4 가지 방법 트래버스
컬렉션 인터페이스에는 iterator () 메소드가 있는데, 이는 반복자 유형을 반환하고 반복자로 반복기가 있습니다. 목록에는 ListIterator () 메소드가 있으므로 추가 Collection Listiterator가 있습니다. 서브 클래스 링크 사전 목록, Arraylist 및 Vector는 모두 구현 목록 및 수집 인터페이스를 구현하므로 두 개의 반복자를 사용하여 트래버스를 사용할 수 있습니다.
코드 테스트
패키지 cn.jason05; import java.util.arraylist; import java.util.iterator; import java.util.list; import java.util.listiterator;/*** 이들은 목록을 가로 지르는 4 가지 방법입니다. * @author cassandra */public class fordemo01 {public static void main (String [] args) {// 수집 목록 작성 <string> list = new arraylist <string> (); list.add ( "hello"); list.add ( "World"); list.add ( "Java"); // 메소드 1, Ierator Ierator Traversal Ierator <string> i = list.iterator (); while (i.hasnext ()) {문자열 s = i.next (); System.out.println (s); } // 메소드 2, Listiterator Ierator Traversal Collection ListIterator <string> lt = list.listiterator (); while (lt.hasnext ()) {문자열 ss = lt.next (); System.out.println (SS); } // 메소드 3, (int x = 0; x <list.size (); x ++) {String sss = list.get (x); System.out.println (SSS); } // 메소드 4, (문자열 ssss : list) {system.out.println (sss); }}}5. 수집 트래버스 방법을 2로 설정합니다
세트 컬렉션에는 get (int index) 메소드가 없으므로 루프 용 일반적인 것이 없으므로 세트에는 ListIterator () 메소드가 없으므로 ListIterator ITERATO가 없습니다. 따라서 가로 지르는 두 가지 방법이 있습니다.
코드 테스트
패키지 cn.jason05; import java.util.hashset; import java.util.iterator; import java.util.set; public class ortest03 {public static void main (string [] args) {set <string> set = new Hashset <String> (); set.add ( "Hello"); set.add ( "World"); set.add ( "Java"); // 메소드 1, 반복자 반복자 반복자 it = set.iterator (); while (it.hasnext ()) {system.out.println (it.next ()); } // 메소드 2, (String s : set) {system.out.println (s); }}}7. 요약
1. FE의 적용 가능성과 한계를 향상시킵니다
적용 가능성 : 컬렉션 및 배열의 횡단에 적용됩니다.
한정:
① 기본 레이어가 반복기이기 때문에 세트는 널가 될 수 없습니다.
angle 앵글 마크를 설정할 수 없습니다.
heciated 반복자는 숨겨져 있으므로 컬렉션을 가로 질러 컬렉션을 수정 (추가 및 삭제) 할 수 없습니다.
2. 컬렉션의 FOR과 제네릭의 조합을 향상시킴으로써 만 새로운 기능의 역할을 수행 할 수 있습니다.
3. 공식 웹 사이트의 새로운 기능을 보는 것이 매우 중요합니다. 당신은 이유와 이유를 알아야합니다. 당신의 마음에 그것을 아는 것만으로 만 자유롭게 사용할 수 있습니다.
위의 기사 "Java New Feature"에서 For Loop의 사용에 대한 가장 완전한 요약은 내가 공유하는 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.