기본 콘텐츠로 건너뛰기

0.08 배열

배열


1. 기본 배열
2. 배열의 배열
3. call by value, call by reference


1. 기본 배열

 - 배열 = 같은 데이터 타입의 묶음
 - 데이터를 많이 관리하기 위해 사용하는 것이 배열

배열의 기본 형식


예)
public class Ex05_for06 {
 
    public static void main(String[] args){
 
        int number = 10;
        number = 29;   // <- 이렇게 되면 10, 29가 저장되는것이 아니라 29만 저장됨(최신의 것만 남음)
 
        int[] array = new int [8];
        array[0= 10;
        array[1= 20;
        array[2= 30;
        array[3= 40;
        array[4= 50;
        array[5= 60;
        array[6= 70;
        array[7= 80;       // 이것을 한 줄로 표현한 것이 밑에 나온 구문
   
        int[] array = new int []{10,20,30,40,50,60,70,80};    
 
        // <- 10과 20,30,40이 붙어서 int 공간에 함께 저장이 됨 = 배열(중괄호 안에 들어가는 수는 더 넣을 수 있음)
 
        int value = array[3];    // <- 인덱스 번호 3이므로 40을 의미(인덱스 번호는 0부터 시작한다 : 번호0이 10, 1이 20...)
        System.out.println("array[3]: " + array[3]); // 출력 결과는 array[3]: 40이다
    }//end of main
}//end of class
cs


예)
public class ArrayExp{
    public static void main(String[] args){
       
        int [] arr = new int [3];   //int[] 데이터 타입의 변수 arr을 선언, int타입의 3개짜리 배열을 arr에 대입
        arr[0= 7;
        arr[1= 3;
        arr[2= 4;                 // 0번, 1번, 2번 방의 값을 대입
 
        System.out.println(arr[2]); // 2번방 값인 4 출력
 
        int [] t = arr;                // int[] 데이터 타입의 변수 t를 선언, 위에서 언급했던 arr을 t에 대입
        arr[1= 1001001;            // 0번, 1번, 2번 방의 값은 arr 값을 그대로 참조, 그리고 1001001이라는 값을 1번방에 대입
 
        System.out.println(t[1]);    // t의 1번방의 값이 1001001로 바뀌었으므로 출력
        System.out.println("arr[1]: "+arr[1]);    // t가 참조한 arr의 1번방 값도 1001001로 바뀌었으므로 같은 값이 출력
    }// end of main
}// end of class
 
cs

2. 배열의 배열


배열의 배열



예)
public static void main(String[] args){
 
    int [][] arr = new int[6][];
    arr[0= new int[1];
    arr[1= new int[2];
    arr[2= new int[3];
    arr[3= new int[4];
    arr[4= new int[1];
    arr[5= new int[1];
 
    int value = 0;
 
    for(int i = 0; i < arr.length; i++){
 
        for(int j = 0; j < arr[i].length; j++){
 
            arr[i][j] = value;
            value++;
 
            //System.out.println("i*j = "+(i*j));
 
        }//end of inner for
    }//end of outer for
 
    for(int i = 0; i < arr.length; i++){
        for(int j = 0; j < arr[i].length; j++){
 
            System.out.println(arr[i][j]);
 
        }//end of inner for
    }//end of outer for
}//end of main
 
cs

배열의 배열 사례 도식화


3. call by value, call by reference

1) call by value(값을 대입하여 호출한다): 값을 전달한다

예) int i = 10;
     int j = i;   → j = 10


2) call by reference(참조값을 대입하여 호출한다): 주소(주소값)를 전달한다

예)
     int [] arr1 = new int[7];
     arr1 [0] = 1;
     arr1 [1] = 2; ...
     arr1 [4] = 5; ...
     arr1 [6] = 7;

    int [] j = arr1;
    j[4] = 7273;

    System.out.println(j[4]);
    System.out.println(arr1[4]);   //출력시 값은 위 아래 모두 7273




 - 이와 같은 결과가 나오는 것은 주소를 참조하기 때문
 - j[4] = 7273 구문을 통해 첫 번째 출력문에서 7273이 나오는 것은 당연
 - 그런데 arr1은 j의 주소를 참조
 - 따라서 arr1의 인덱스 4번 역시 7273가 된다


 예) 외동아들인 철수의 학교에서 출석번호는 20번이다: 철수 - 출석번호 20번 / 외동아들
     학교에서 배탈이 난 철수는 조퇴를 했다
     출석번호 20번은 배탈이 났다
     조퇴하고 집에 온 외동아들은 배탈이 났다
     즉, 출석번호 20번이 배탈난 것 = 외동아들 철수가 배탈난 것