Foreach 루프의 반복 변수 할당
Java에서 foreach 루프는 컬렉션 반복을 위한 간결한 구문을 제공합니다. 그러나 루프 내에서 반복 변수를 수정할 때 일반적인 오해가 발생합니다. 다음 코드를 고려해 보세요.
String boss = "boss"; char[] array = boss.toCharArray(); for(char c : array) { if (c == 'o') c = 'a'; } System.out.println(new String(array)); // Prints "boss"
이 코드가 예상되는 "bass" 대신 "boss"를 인쇄하는 이유는 무엇입니까?
이 동작을 이해하려면 foreach 루프가 다음에서 작동한다는 것을 인식하는 것이 중요합니다. 요소 자체가 아닌 컬렉션 요소의 복사본입니다. 반복 변수(이 경우 c)는 배열에 있는 현재 요소의 로컬 복사본일 뿐입니다. c를 수정해도 배열의 원래 문자는 수정되지 않습니다.
배열 요소를 수정하려면 다음과 같이 인덱스를 통해 요소에 명시적으로 액세스해야 합니다.
for (int i = 0; i < array.length; i++) { if (array[i] == 'o') { array[i] = 'a'; } }
이 코드는 문자를 배열 요소에 직접 수정하여 원하는 "bass" 출력을 얻습니다.
요약하자면, foreach 루프로 작업할 때 반복 변수는 컬렉션 요소의 로컬 복사본. 기본 데이터를 수정하려면 인덱스를 통해 요소에 명시적으로 액세스하고 배열에서 직접 수정을 수행하세요.
위 내용은 Java For-Each 루프에서 반복 변수를 수정해도 원래 배열이 변경되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!