> Java > java지도 시간 > Java For-Each 루프에서 반복 변수를 수정해도 원래 배열이 변경되지 않는 이유는 무엇입니까?

Java For-Each 루프에서 반복 변수를 수정해도 원래 배열이 변경되지 않는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-26 12:11:13
원래의
801명이 탐색했습니다.

Why Doesn't Modifying the Iteration Variable in a Java For-Each Loop Change the Original Array?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿