[JAVA] 자바 가변 배열 및 배열 복사

    728x90

    안녕하세요

    로로봉입니다 : )

    오늘은 가변 배열과 배열 복사 방법에 대해 알아보도록 하겠습니다.

     

    자바에서는 2차원 이상의 배열에 대해 배열의 배열 형태로 처리한다는 사실을 이용하면 보다 자유로운 배열을 구성 할 수 있습니다.

     다차원 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 크기를 지정하지 않고, 추후에 다른 크기의 배열을 생성함으로써 고정된 형태가 아닌 가변 배열을 구성할 수 있습니다.

     

     일반적으로 고정된 2차원 배열을 생성할 경우 아래와 같이 5 x 3 크기의 2차원 배열 data를 생성할 수 있습니다.

    int[][] data = new int[5][3];

     위의 코드를 가변 배열로 아래와 같이 선언할 수 있습니다.

    int[][] data = new int[5][];
    data[0] = new int[3];
    data[1] = new int[3];
    data[2] = new int[3];
    data[3] = new int[3];
    data[4] = new int[3];

     첫번째 방식과 같이 [5][3]을 지정하여 배열을 생성하는 경우 고정된 크기의 배열이 선언 되지만,

    두번째 방식으로 2차원 배열을 생성하면 각 행마다 다른 크기의 배열도 생성이 가능합니다.

    int[][] data = new int[5][];
    data[0] = new int[1];
    data[1] = new int[2];
    data[2] = new int[3];
    data[3] = new int[4];
    data[4] = new int[5];


     

    배열은 한번 생성하면 크기를 변경할 수 없기 때문에 더 많은 저장 공간이 필요하다면 보다 큰 배열을 새로 만들고 이전 배열로부터 내용을 복사해야 합니다.

    배열간의 내용을 복사하려면 for문을 이용하거나 arraycopy()함수를 사용하면 됩니다.

    arraycopy() 함수를 사용하는 방법을 알아보겠습니다.

    System.arraycopy(arr1, 0, arr2, 0, arr1.length);

    arr1 배열의 0번째 데이터 부터 arr2 배열의 0번째 위치에 length 만큼 복사합니다.

    이때 복사하려는 배열의 위치가 적절하지 못하거나 복사하려는 내용보다 여유공간이 적으면 ArrayIndexOutOfBoundsException이 발생합니다.

     

    좋아요 ♥ + 구독 부탁드립니다 : )

    728x90
    반응형

    댓글