3. JAVA - 배열

hsso_o·2024년 7월 8일
0

스터디

목록 보기
10/44

배열

  • 동일한 자료형의 묶음
  • 연속된 메모리 공간에 값을 저장하고 사용하기 위한 용도
  • heap 영역에 new 연산자를 통해 할당
  • 배열 길이는 최초 선언한 값으로 고정, 인덱스 통해 데이터 접근
    • 배열은 참조 타입으로, 배열 변수는 실제 배열 데이터가 저장된 힙 영역의 메모리 주소를 참조
  • 배열이 생성되면 각 요소는 해당 타입의 기본값으로 초기화

사용 이유

  • 만약 배열을 사용하지 않는다면 동일한 자료형을 가진 다양한 값들을 각각의 변수에 저장하여 사용해야 함
  • 연관된 데이터를 저장하기 위한 변수의 선언을 줄여주며, 반복문 등을 이용해 과정을 쉽게 처리할 수 있음

1차원 배열

  • 단일 열의 데이터를 저장

int[] arr = new int[5]; // 크기가 5인 정수형 배열 선언
int[] arr2 = {1, 2, 3, 4, 5}; // 선언과 동시에 초기화

다차원 배열

  • 1차원 배열 여러 개를 하나로 묶어서 관리하는 배열(배열의 배열)

int[][] matrix = new int[3][3]; // 3x3 정수형 2차원 배열 선언
int[][] matrix2 = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
}; // 선언과 동시에 초기화

배열의 복사

  • 얕은 복사/깊은 복사

얕은 복사(shallow copy)

  • stack 의 주소값만 복사, 원본을 공유 할 목적
  • 두 개의 레퍼런스 변수는 동일한 배열의 주소값을 가짐
    • 하나의 레퍼런스 변수에 저장된 주소 값을 가지고 배열의 내용을 수정(값 변경) 을 하게 되면 -> 다른 레퍼런스 변수로 배열에 접근했을 때도 동일한 배열을 가리키고 있기 때문에 변경된 값이 반영

깊은 복사(deep copy)

  • heap의 배열에 저장된 값을 복사, 원본과 사본을 분리하여 관리할 목적

  • 각 배열은 다른 주소값을 가짐

    • 하나의 배열에 변경을 하더라도 다른 배열에는 영향X
  • 복사 방법
    System.arraycopy(): 배열의 특정 범위를 다른 배열에 복사.
    Arrays.copyOfRange(): 지정된 범위의 요소를 새로운 배열로 복사.
    Arrays.copyOf(): 원본 배열의 처음부터 지정된 길이만큼을 복사.
    clone(): 원본 배열을 복제, 부분 복사 시 직접 루프 사용.
    Stream API: 배열을 스트림으로 변환하여 부분 처리.
    등등

profile
아뇨 소혠데요-

0개의 댓글