The Code 2024. 6. 17. 12:01

1. 배열(Array)

2. 선언 방법

3. 배열 요소의 타입

4. 다차원 배열

5. 인덱스(Index)

6. 배열의 특징


 

배열(Array)

 

  • 동일한 타입의 데이터를 여러 개 저장할 수 있는 고정된 크기의 자료구조
  • 자바에서 배열은 객체(Object)
  • 배열 변수는 참조 변수, 배열 객체는 heap 영역에 저장됨
  • 데이터를 일련의 메모리 위치에 저장
  • 각 데이터에 대한 인덱스(Index)를 사용하여 접근
  • 배열의 크기를 변경할 수 없음

 

선언 방법

 

1. 선언과 동시에 크기르 지정

int[] numbers = new int[10];  // 배열 객체를 생성하고, 참조값을 변수에 저장한다.

 

2. 크기를 지정하지 않고 선언

int[] numbers;
numbers = new int[]{1, 2, 3, 4, 5};

 

배열 요소의 타입

 

자바에서 배열 선언 시, 배열 요소의 타입과 크기를 지정해야 함. 배열 요소 타입은 자바의 모든 데이터 타입(int, double, char, String)일 수 있으며, 요소 타입은 모두 같아야 함

int[] numbers = new int[5]; // int형 요소 5개를 저장하는 배열
double[] prices = new double[10]; // double형 요소 10개를 저장하는 배열
String[] names = new String[3]; // String형 요소 3개를 저장하는 배열

 

 

다차원 배열

 

배열은 다차원 배열로 선언할 수도 있다.

int[][] matrix = new int[3][3];    // 3 x 3 크기의 2차원 배열
int[][][] cube = new int[3][3][3]; // 3 x 3 x 3 크기의 3차원 배열

 

인덱스(Index)

 

배열의 각 요소에 접근하려면 인덱스를 사용해야 한다.

인덱스는 0부터 시작하며, 배열의 마지막 인덱스는 '배열의 길이 - 1' 이다.

배열의 길이보다 큰 값을 인덱스로 사용하면 ArrayIndexOutOfBoundsException 예외가 발생한다.

int[] numbers = new int[]{1, 2, 3, 4, 5};

// 배열의 요소에 액세스
int firstNumber = numbers[0];  // 1
int secondNumber = numbers[1]; // 2

// 배열의 요소에 값 할당
numbers[2] = 6;    // {1, 2, 6, 4, 5}

// 다음과 같이 반복문을 사용하여 배열의 모든 요소를 참조할 수 있다.
for (int i = 0; i < numbers.length; i++) {
    int number = numbers[i];
    System.out.println(number);
}

 

배열의 특징

 

  • 메모리 관리
    배열은 연속된 메모리 공간에 요소를 저장하기 때문에, 요소에 대한 메모리 관리가 용이하다.
  • 크기 변경 불가능
    배열은 한 번 생성된 후 크기를 변경할 수 없다. 크기를 변경해야 하는 경우, 새로운 배열을 생성하여 이전 배열의 요소를 복사해야 한다.
  • 메모리 낭비
    배열은 고정된 크기를 가지기 때문에, 요소의 개수가 많지 않은 경우에는 메모리 낭비가 발생할 수 있다.
  • 요소의 삽입, 삭제가 비효율적
    배열은 요소의 삽입, 삭제가 비효율적이다. 삽입 또는 삭제 작업 후 요소의 인덱스를 업데이트해야 하므로, 이 작업이 많아지면 성능이 저하될 수 있다.

 

ArrayList

 

  • Arrays.sort(array): 배열의 요소를 오름차순으로 정렬
  • Arrays.binarySearch(array, value): 정렬된 배열에서 저장된 값의 인덱스를 찾음
  • Arrays.fill(array, value): 배열의 모든 요소를 지정된 값으로 채움
  • Arrays.copyOf(array, length): 배열을 지정된 길이로 복사
  • Arrays.equals(array1, array2): 두 배열이 같은지 확인
  • Arrays.deepEquals(array1, array2): 다차원 배열 비교
  • Arrays.asList(array): 배열을 리스트(list)로 변환