(for문, 향상된 for문에 대한 기본적인 설명은 생략)
LinkedList<A>[] lists = new LinkedList[size];
for(int i=0; i<lists.length; i++) {
lists[i] = new LinkedList<>();
}//for end
for(LinkedList<A> list : lists) {
list = new LinkedList<>();
}//for each end
위 for문과 for each문의 결과값이 같을 거라 생각했다.
하지만 for each문에서 list라는 변수는 lists의 각 요소(LinkedList자료형)의 값을 임시로 담아두는 공간일 뿐이다.
그래서 list = new LinkedList<>(); 에서 처럼
생성자를 호출해, 새로운 LinkedList클래스의 인스턴스를 만들어 list 변수에 참조값을 저장하더라도
실제 lists의 요소들의 값은 변하지 않는다.
즉, for문은 각 요소의 값을 읽어올 수 있고, 수정할 수도 있지만,
for each문은 Collection의 각 요소의 값은 읽어올 수 있지만, 수정할 수는 없다.
int[] numArr = {1, 2, 3, 4, 5};
for(int num : numArr) {
num += 1;
}//for each end
//numArr요소는 업데이트 되지 않고 그대로이다.
//numArr : {1, 2, 3, 4, 5}
for(int i=0; i < numArr.length; i++) {
numArr[i] += 1;
}
//numArr : {2, 3, 4, 5, 6}
'언어 > Java' 카테고리의 다른 글
Java 기본 10 - 상속 (0) | 2021.11.11 |
---|---|
Java 기본 9 - 중첩 클래스/중첩 인터페이스/익명 클래스 (0) | 2021.11.10 |
싱글톤 Singleton (0) | 2021.10.20 |
Java 기본 6 - 추상클래스 (0) | 2021.05.24 |
Java 기본 5 - Enum (0) | 2021.05.23 |
댓글