2014-01-29 4 views
-3

나는 자바 코드를 읽고 있어요, 그리고for 루프는 무엇을 의미합니까?

이 같은 기록 된 앞 루프의이 종류를 보지 못했다
for (PoolStaff staff : staffList) 

로에 대한 루프를 가지고있다. 등 내가 좋아하는 뭔가를보고 사용 해요 "내가 < 5, 내가 ++에 대한 (INT I = 0,"

사람은 루프?

+1

이것은 'foreach' 루프 또는 향상된 for 루프라고합니다. 크기를 알 필요없이 읽기 전용 모드로 컬렉션/배열을 반복하는 데 사용됩니다. – Tiny

+3

공정하게, downvoters에게, 정말 구글과 같이 이런 일을하는 것이 어려울 수 있습니다. (정말 특수 문자로 구별되어있어봤을 수는 없습니다). 당신은 일종의 "강화 된 for 루프"또는 초보자가 아닌 것을 알아야합니다. :) – asteri

답변

1

그것은 foreach 루프가. 기본적으로는 iteratea 나에게 설명 할 수 컬렉션의 모든 요소를 ​​통해.

6

이 루프에 대한 향상된 , 또는 각 루프에 대한 라고합니다. 그것은 목록의 각 항목에 대한 의미, 그것에게 임시 이름을주고 그것으로 뭔가.

목록이 primit의 배열 인 경우 예를 들어 int[]처럼 이름이 지정된 변수는 사본입니다. 사본에 대한 변경 사항은 원본 목록에 반영되지 않습니다. 예를 들어 : 목록 귀하의 질문에 staffList 같은 객체의 배열입니다

int[] myArray = {1, 2, 3}; 
for(int i: myArray) { 
    i = i + 1; 
} 
System.out.println(Arrays.toString(myArray)); // This prints 1, 2, 3! 

경우, 명명 된 변수는 원래 객체에 대한 참조이며, 지정된 오브젝트에 대한 변경은 원본에 반영됩니다 명부. 예를 들어 :

Person[] myArray = {new Person("Alice", 23), 
        new Person("Bob", 20), 
        new Person("Charlie", 25)}; 
for(Person person: myArray) { 
    person.age = 30; 
} 
// Now every person in my list is 30 years old 

당신은 공식 소스, here 각 루프에 대한 자세한 정보를 얻을 수 있습니다.

+1

나는'staff'_라는 변수에서 _reference라고 말하고 싶습니다. –

+1

@Sotirios 실제로 모든 경우에 사실이 아닙니다. 각 루프에 대해 int []와 같은 프리미티브 배열을 반복하는 경우 새 변수는 참조가 아니라 복사본입니다. 그러나 전적으로 정답이 아니므로 제 답변을 업데이트하겠습니다. – Rainbolt

+0

@John 원시 타입 배열에 대한 좋은 점. 많은 사람들이 (나 자신을 포함해서) 그 세부 사항을 글로 표현했을 것입니다. 일반적으로 나는 이런 종류의 질문에 대한 답을 +1하지 않을 것이지만 지옥, 나는 감명 받았다. :) – asteri