배열이란 무엇인가?

배열이란?

배열은 인접한 메모리 위치에 저장된 동일한 데이터 유형 모음입니다.

쉽게 생각하면 계단이라고 생각하시면 됩니다. 계단에서 5걸음 올라가면 5번째 위치이고 3걸음 올라가면 3번째 위치입니다. 걸음 수만 알면 어디 위치인지 알 수 있습니다.

배열의 첫 번째 요소의 메모리 위치에 오프셋을 추가하기만 하면 각 요소의 위치를 쉽게 계산할 수 있습니다.

배열의 기본 인덱스의 값은 0이고 배열의 길이가 늘어날 수록 인덱스는 1씩 증가합니다.

 

배열의 기본 용어

  • 인덱스 : 배열의 요소의 위치는 인덱스로 식별됩니다. 배열의 인덱스는 0부터 시작합니다.
  • 배열 요소 : 배열에 저장된 항목입니다.
  • 배열 길이 : 저장할 수 있는 배열의 요소 수에 따라서 달라집니다.

배열의 선언

주어진 크기의 배열에 메모리를 할당하는 것을 의미합니다.

int[] arr = {1,2,3}

컴파일될 때 배열 요소의 메모리가 할당됩니다. 배열의 요소들과 함께 한번에 처리하고 있습니다.

배열의 요소들없이 선언만 하고 싶다면 아래처럼 선언해도 됩니다.

int[] arr = new int[3];

고정된 크기의 메모리만 할당되서 많은 크기의 배열을 선언하고 적은 수의 배열의 요소만 저장한다면 메모리 낭비가 발생합니다. 반대로 적은 크기의 배열을 선언하고 많은 수의 배열의 요소를 저장한다면 메모리의 공간이 부족합니다.

 

배열 데이터 구조가 필요한 이유

1개의 학급에서 2명의 학생이 있을 경우 시험 점수를 기록해야 한다면 2개의 변수를 선언하고 기록하면 됩니다. 하지만 100명의 학생으로 늘어날 경우 시험 점수를 기록하고 추적하는 것은 어렵습니다.

그래서 배열은 하나의 변수에 여러 인스턴스를 기록해서 추적하기 쉽게 합니다.

 

배열의 유형

  • 1차원 배열 : 행으로만 구성된 차례대로 저장되는 배열입니다.
  • 다차원 배열 : 행과 열을 가지는 행렬로 저장되는 배열입니다.

배열의 장점

  • 배열은 요소에 무작위 접근을 허용합니다. 그래서 더 빠르게 요소에 접근할 수 있습니다.
  • 배열은 인접한 메모리를 사용하기 때문에 더 나은 캐시 지역성을 가집니다.
  • 배열은 변수 하나에 동일한 데이터 유형을 가진 집합을 저장할 수 있습니다.
  • 여러 데이터 구조를 구현하는데 사용됩니다.

배열의 단점

  • 배열은 고정된 크기를 가지기 때문에 추가 데이터 저장하기가 어렵습니다.
  • 배열은 인접한 메모리 위치에 데이터를 저장하므로 삭제 및 삽입을 구현하기가 어렵습니다.