[Java] 배열(Array)

u_yonu·2026년 1월 27일

Java

목록 보기
5/18
post-thumbnail

배열(Array)

  • 동일한 데이터 타입의 값(0개 이상)들을 저장하기 위한 자료구조
  • 인덱스를 이용하여 각 요소에 접근할 수 있음
  • 고정된 크기 (생성된 배열의 크기를 바꿀 수는 없음)
  • 메모리에 연속적으로 저장이 됨

배열의 선언 필요 요소

  • 자료형 : 배열을 이루는 자료형(기초자료형, 참조자료형 모두 가능)
  • 배열이름 : 프로그램에서 사용할 배열의 이름(주소 값 저장)
  • 길이 : 배열을 이루는 요소의 값 (배열은 고정된 길이)

배열 선언

  • 데이터 타입[] 배열이름
  • 데이터타입 배열이름 []
자료형배열 이름배열 선언문
intintArrayint[] intArray;
charcharArraychar[] charArray;
booleanboolArrayboolean[] boolArray;
StringstrArrayString[] strArray;
floatfloatArrayfloat[] floatArray;

배열의 생성과 초기화

  • 자료형[] 배열이름 = new 자료형[길이];
    -> 배열 생성(자료형의 초기값으로 초기화)
  • 자료형[] 배열이름 = new 자료형[길이]{값1, 값2, 값3, 값4};
    -> 배열 생성 및 값 초기화
  • 자료형[] 배열이름 = {값1, 값2, 값3, 값4};
    -> 선언과 동시에 초기화
자료형기본값비고
booleanfalse
char'\u0000'공백
byte, short, int0
long0L
float0.0f
double0.0
참조형 변수null아무것도 참조하지 않음

배열의 메모리 생성과정

배열의 인덱스

  • [ ]사이에 숫자를 넣으면 해당 위치의 요소에 점근할 수 있음
  • 인덱스는 0부터 시작 -> 길이가 5인 배열의 인덱스
    : 0, 1, 2, 3, 4
  • 음수를 사용할 수 없음
  • 배열의 길이를 벗어나는 값을 사용할 수 없음(N개의 크기 -> 0 ~ N-1 활용)
    => 접근 가능한 배열의 인덱스 범위를 벗어나면 오류 발생
  • .length를 이용하면 배열의 길이는 구할 수 있음

배열의 출력

  • 저번시간에 배웠던 반복문을 통해서 출력해볼 수 있음!
  • java.util.Arrays 클래스의 메서드 toString() 활용
    -> Arrays.toString(배열명)-> [요소1, 요소2, 요소3, ''']식으로 출력됨
int[] nums ={97, 1, 16};
System.out.println(Arrays.toString(nums));

// 출력 결과
// [97, 1, 16]

배열의 복사

  • 실제 여러가지 방법으로 복사가 가능
  • 배열은 고정된 크기이므로 배열의 크기를 변경하기 위해서는 배열을 생성 및 복사해야함

얕은 복사

  • 객체 내부의 참조형 변수는 원본 객체의 참조를 복사함
  • 원본 객체와 복사본이 같은 참조를 가리키므로, 하나를 수정하면 다른 객체에도 영향 O

깊은 복사

  • 객체의 모든 필드 값을 새로 복사하여 독립적인 개체를 생성함.
  • 원본 객체와 복사본은 완전히 별개의 메모리 공간을 가지므로, 한 객체의 변경이 다른 객체에 영향 X

배열의 복사 메서드

  1. Arrays.copyOf() : 배열을 복사하여 새로운 배열을 생성
  2. Arrays.copyOfRange() : 배열의 특정 범위를 복사하여 새로운 배열을 생성

다차원 배열(Array)

  • 배열 안에 또 다른 배열을 포함하는 구조
  • 3차원 이상도 가능
    cf) 일반적으로 2차원 배열(행렬 형태)가 많음
  • 표 형태 혹은 복잡한 계층 구조를 표현할 때 유용
  • 배열 객체의 참조 값을 요소로 갖는 배열

  • 2차원 배열은 배열 요소로 1차원 배열의 참조를 가지는 배열
  • 3차원 배열은 배열 요소로 2차원 배열의 참조를 가지는 배열
    '
    '
    '
  • n차원 배열은 배열 요소로 n-1차원 배열의 참조를 가지는 배열

즉, n차원 배열의 요소에 접근하기 위해서는 n개의 인덱스가 필요함


2차원 배열

  • 배열의 각 요소가 또 다른 1차원 배열을 가리킴
  • 행(row)과 열(column)의 구조 / 테이블 구조 / 좌표 평면 구조 등
  • 2차원 배열의 각 요소 즉, 배열의 크기는 일정하지 않아됨
    ex)
    jagged[0] = new int[2]; // 첫 번째 행은 2칸
    jagged[1] = new int[5]; // 두 번째 행은 5칸
    jagged[2] = new int[1]; // 세 번째 행은 1칸
    => 상관없음

2차원 배열 선언

  • 데이터타입[][] 배열이름
    // 자바에서는 이게 국룰임!
  • 데이터타입 배열이름 [][]
  • 데이터타입[] 배열이름[]

2차원 배열 초기화

  1. 크기만 지정
    new 데이터타입[1차원 배열 개수(행의 수)][1차원 배열 크기(열의 수)]
  2. 비정형 배열
    new 데이터타입[1차원 배열 개수(행의 수)][]
  3. 값으로 초기화

2차원 배열 인덱스

  • 인덱스를 이용하여 요소에 접근
  • arr[행 인덱스][열 인덱스]

2차원 배열 메모리 구조


3차원 배열

3차원 배열 선언

  • 데이터타입[][][] 배열 이름

3차원 배열 생성

  • 배열이름 = new 데이터타입[크기1][크기2][크기3]
    크기 1 : 3차원 배열의 크기
    크기 2 : 2차원 배열의 크기
    크기 3 : 1차원 배열의 크기
  • 배열 이름 = new 데이터타입[크기1][][]
  • 배열 이름 = new 데이터타입[][][]

한줄 요약 : 파이썬은 [] 면 되던데..

profile
비전공자의 개발도전기

0개의 댓글