배열

HEUKWU·2023년 1월 19일
0

배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 의미한다. 따라서 많은 양의 데이터를 저장할 때 용이하게 사용할 수 있다.

배열의 생성과정

  1. int[] score; - int형 배열 참조변수 score를 선언한다.
  2. score = new int[]5 - 연산자 new에 의해서 메모리의 빈 공간에 5개의 int형 데이터를 저장할 수 있는 공간이 마련된다.
    각 배열 요소는 int형의 기본값인 0으로 초기화 된다.
    끝으로 대입연산자 '='에 의해 배열의 주소가 참조변수 score에 저장된다.

배열의 한계

배열은 초기화 할때 그 크기가 정해진다.

int[] numArr = new int[5]

한번 생성되면 컴파일 수 실행되는 동안은 그 크기를 바꿀 수 없다.

배열은 연속적인 메모리 공간을 차지하기 때문에
배열의 크기를 늘려야한다면 원래의 공간 뒤에 연속적인 메모리 공간이 추가적으로 존재한다는 보장이 없다.

따라서 배열의 크기가 부족하다면 필요한 만큼의 크기의 배열을 새롭게 만든다. 그리고 새로 만든 배열에 기존의 값들을 복사한다.

배열의 복사

위에서 말했듯이 배열에 저장할 더 많은 공간이 필요하다면 보다 큰 배열을 만들고 이전 값들을 복사해야한다고 했다. 간단하고 빠르게 배열을 복사 할 수 있는 메서드들이 있다.

System.arraycopy()

메서드를 사용하지 않고 for문으로 배열을 복사 할 수 있지만 배열의 요소 하나하나에 접근해야 하기 때문에 효율이 좋지 않다.
System클래스의 arraycopy()메서드를 사용한다면 값들을 한번에 복사하기 때문에 더욱 빠르고 간단하게 복사 할 수 있다.

System.arraycopy(num, 0, newNunm, 0, num.lenght);

num[0]에서 newNum[0]으로 num.lenght개의 데이터를 복사한다.

이때 복사하려는 배열의 위치가 잘못되면 ArrayIndexOutOfBoundsException이 발생할 수 있기 때문에 주의해야한다.

0개의 댓글

관련 채용 정보