2016-04-14

18. java - for-each 문

for-each 문 
 : 배열에 저장되어 있는 모든 값을 참조할 때 사용
 : for문을 사용할 때 보다 더욱 간결하게 사용가능


- 구조
배열의 요소를 지칭하는 변수
반복할 배열
각 요소를 참조하여 무엇을 할 것인지





* 배열 요소를 지칭하는 변수와 반복할 배열의 데이터 타입은 같아야 함!!

* 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문 내에서만 바뀐다.

+ 배열 요소가 참조하는 인스턴스 변수는 변경이 된다.  



댓글 없음 :

댓글 쓰기