안녕하세요.
아래 문제에서
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
sehongpark님의 답변
# 배열과 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
goodhubby8님의 답변
쉽게 이해가 잘 됩니다~ 감사합니다!