본문 바로가기
언어/Java

for-each문과 for문의 차이

by 넬준 2021. 11. 3.

 

(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

댓글