프로그래밍 공부/Java
[Java] enhanced for-loop
내 머리속 어딘가
2025. 5. 31. 15:52
반응형
코테를 풀다가 어떤 배열을 선언하고,
해당 배열에 입력값을 대입해야되는 상황이 있었다.
매번 for(int i = 0; i < list.length(); i++) { } 이렇게 쓰기가 싫어서
enhanced for문을 사용해보려고 아래와 같이 코드를 작성했다.
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] angle = new int[3];
for(int x : angle) x = Integer.parseInt(br.readLine());
}
}
그니까 나는 angle의 요소를 하나씩 사용해서 해당 값에다가 읽어온 값을 대입하려고 했던 것이다.
그런데 출력을 해보니 angle에는 모든 값들이 초기값 그대로 0으로만 출력이 되었다.
지피티에게 도움을 청했다.
왜 값이 입력되지 않는 것일까?
원인은 간단했다.
enhanced for문이 어떻게 동작하는 것인지 제대로 파악하지 못한 것이다.
for(int x : list) { ]
이 줄이 의미하는 동작은
int x
를 선언하고, list
내부에 있는 값을 하나씩 순차적으로 가져와서 x
에 대입한 후 for
문 내부의 구문을 실행하고
list
의 요소들을 모두 사용했다면 반복을 종료해라
대충 이런 의미인 것이다.
따라서 나는 list
내부의 요소에 값을 입력한 것이 아니고,
해당 값을 복사한 새로운 변수 x
에 값을 대입 한 것이기 때문에 list
내부의 값에는 변화가 없었던 것이다.
때문에 enhanced for문은 배열 내부의 요소들을 읽어올 때에만 사용을 하는 것이 좋고,
내부 요소의 값을 변경하기 위해서는 일반 for문을 사용하는 것이 좋겠다.
반응형