for-each 문
: 배열에 저장되어 있는 모든 값을 참조할 때 사용
: for문을 사용할 때 보다 더욱 간결하게 사용가능
- 구조
① 배열의 요소를 지칭하는 변수
② 반복할 배열
③ 각 요소를 참조하여 무엇을 할 것인지
* 배열 요소를 지칭하는 변수와 반복할 배열의 데이터 타입은 같아야 함!!
* for-each 문 내에서 요소(e)의 값을 변경시켜도 해당 for-each문 내에서만 의미가 있음
... 배열 요소를 변경시켜야 한다면 for-each는 사용x
ex)
(실행결과) ... 요소를 모두 출력
* 인스턴스 배열의 경우
... 배열에 저장되어 있는 인스턴스의 참조 값이 변경이 불가한것
참조 값을 통한 인스턴스 변수의 변경은 가능하다.
ex)
(실행결과)
+ 배열 참조 값을 바꾸어도 해당 for-each문 내에서만 바뀐다.
+ 배열 요소가 참조하는 인스턴스 변수는 변경이 된다.
② 반복할 배열
③ 각 요소를 참조하여 무엇을 할 것인지
* 배열 요소를 지칭하는 변수와 반복할 배열의 데이터 타입은 같아야 함!!
* for-each 문 내에서 요소(e)의 값을 변경시켜도 해당 for-each문 내에서만 의미가 있음
... 배열 요소를 변경시켜야 한다면 for-each는 사용x
ex)
int []arr = {1,2,3,4,5};
for(int e : arr){
System.out.println(e);
}
|
(실행결과) ... 요소를 모두 출력
* 인스턴스 배열의 경우
... 배열에 저장되어 있는 인스턴스의 참조 값이 변경이 불가한것
참조 값을 통한 인스턴스 변수의 변경은 가능하다.
ex)
public class Number {
public int num;
public Number(int n){
this.num = n;
}
public int getNum(){
return num;
}
}
class ExMain{
public static void main(String []args){
Number []arr = new Number[3];
arr[0] = new Number(1);
arr[1] = new Number(2);
arr[2] = new Number(3);
System.out.println("참조하는 인스턴스의 변수를 1증가후 출력");
for(Number e : arr)
e.num++;
for(Number e : arr)
System.out.print(e.getNum() + " ");
System.out.println("\n배열의 요소 변경 후 출력");
for(Number e : arr){
e = new Number(11);
e.num++;
System.out.print(e.getNum() + " ");
}
System.out.println("\n참조 값의 인스턴스 변수 재 출력");
for(Number e : arr)
System.out.print(e.getNum() + " ");
}
}
|
(실행결과)
+ 배열 참조 값을 바꾸어도 해당 for-each문 내에서만 바뀐다.
+ 배열 요소가 참조하는 인스턴스 변수는 변경이 된다.
댓글 없음 :
댓글 쓰기