안녕하세요. 아래 문제에서 myList[i + 1] = myList[i]; for (int e: myList) 위 코드들이 실제 어떤 값을 만드는 지가 잘 이해가 안됩니다. 정답은 D로 알고있는데, 설명 부탁드립니다~ What is the output of the following code? ``` int[] myList = {1, 2, 3, 4, 5, 6}; for (int i = myList.length - 2; i >= 0; i–) { myList[i + 1] = myList[i]; } for (int e: myList) System.out.print(e + ” “); ``` A. 1 2 3 4 5 6 B. 6 1 2 3 4 5 C. 6 2 3 4 5 1 D. 1 1 2 3 4 5 E. 2 3 4 5 6 1
# 배열과 foreach 문 먼저 주어진 코드를 확인해 보면, 하나의 배열을 반복문을 통해 수정한 뒤, 출력하는 코드입니다. ``` // 배열 생성 int[] myList = {1, 2, 3, 4, 5, 6}; // 반복문을 이용한 수정 for (int i = myList.length - 2; i >= 0; i–) { myList[i + 1] = myList[i]; } // 반복문을 사용하여 출력 for (int e: myList) System.out.print(e + ” “); ``` 위 코드 5~7 행의의 동작은 배열의 요소를 뒤로 한 칸씩 이동 시킵니다. i의 값을 하나하나씩 풀어서 적어본다면 다음과 같습니다. ``` // 뒤로 한 칸씩 대입 myList[5] = myList[4]; // 1, 2, 3, 4, 5, 5 myList[4] = myList[3]; // 1, 2, 3, 4, 4, 5 myList[3] = myList[2]; // 1, 2, 3, 3, 4, 5 myList[2] = myList[1]; // 1, 2, 2, 3, 4, 5 myList[1] = myList[0]; // 1, 1, 2, 3, 4, 5 ``` 다음으로 10~11행은 foreach 문으로 향상된 for문이라고도 불리는 구문입니다. foreach 구문의 형식은 다음과 같습니다. ``` // A: 배열의 요소를 추출하여 저장할 변수 // B: 배열 for ( A : B ) { // 반복 할 내용 } ``` 일반적인 for문과 비교하면 다음과 같습니다. ``` // foreach 구문 for(int e : myList) { System.out.print(e + " "); } // for 문 for (int i = 0; i < myList.length; i++) { int e = myList[i]; System.out.print(e + " "); } ``` 배열의 모든 요소에게 같은 작업을 수행 할 경우, 일반적으로 foreach 구문이 편리합니다. 코드의 양이 줄어들 뿐 아니라 그 내용 또한 직관적이기 때문입니다. foreach 문법에 대해 더 자세한 내용을 알고싶다면 아래 링크를 참조해보세요 + https://goo.gl/tktUzW
쉽게 이해가 잘 됩니다~ 감사합니다!