본문 바로가기

JAVA

[JAVA] 배열과 기본형, 참조형이란?

📦 배열 (Array)

배열은 자바에서 동일한 타입의 여러 데이터를 하나의 변수 안에 연속적인 구조로 묶어서 효율적으로 관리할 수 있게 해주는 자료 구조다.

🧩 배열의 주요 특징

  • 동일 타입 저장: 배열은 선언 시 지정된 오직 한 가지 타입의 데이터만 저장할 수 있다. 예를 들어, int 배열에는 int 값만, String 배열에는 String 객체만 저장할 수 있다.
  • 연속적인 메모리 구조: 배열의 요소들은 메모리상에 연속적으로 할당되기 때문에, 특정 위치의 데이터에 빠르게 접근할 수 있다.
  • 인덱스(Index) 사용: 배열의 각 요소는 0부터 시작하는 고유한 인덱스 번호를 가진다. 이 인덱스를 통해 특정 위치의 요소에 직접 접근하고 값을 읽거나 쓸 수 있다. 배열이름[인덱스] 형태로 접근할 수 있다. (예: scores[0], names[2])
  • 고정된 크기: 배열은 한 번 생성되면 크기를 변경할 수 없다. 배열을 선언할 때 지정한 크기만큼만 요소를 저장할 수 있으며, 더 많은 요소를 저장하려면 새 배열을 생성하고 기존 요소를 복사해야 한다. (이러한 제약을 보완하기 위해 ArrayList 같은 동적 배열 컬렉션을 사용하기도 한다.)
  • 참조 타입: 자바에서 배열은 기본 타입(int, char 등)이 아닌 **참조 타입(Reference Type)**이다. 배열 변수 자체는 실제 데이터가 저장된 메모리 공간의 주소값(참조값)을 가지고 있다.

➡️ 참조값을 배열에 담기

배열은 기본 타입(int, boolean 등)의 값을 직접 저장할 수도 있지만, 객체의 참조값(메모리 주소)도 저장할 수 있다.

// 정수형 배열 (기본 타입 값 저장)
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;

// String 배열 (참조 타입 값 = String 객체의 참조값 저장)
String[] names = new String[2];
names[0] = "김철수";   // "김철수" 객체의 참조값을 names[0]에 저장
names[1] = "이영희";   // "이영희" 객체의 참조값을 names[1]에 저장

// 사용자 정의 클래스 객체 배열
class Person {
    String name;
    Person(String name) { this.name = name; }
}

Person[] people = new Person[2];
people[0] = new Person("홍길동"); // Person 객체의 참조값을 people[0]에 저장
people[1] = new Person("장보고"); // 다른 Person 객체의 참조값을 people[1]에 저장

각 인덱스는 하나의 변수처럼 작동한다. names[0]은 "김철수"라는 문자열 객체를 가리키는 변수와 같다고 생각하면 된다.

System.out.println(names[0]); // 출력: 김철수

💾 기본형과 참조형

자바에서 변수의 데이터 타입은 크게 두 가지로 나눌 수 있다.

  • 기본형(Primitive Type): 변수 자체에 값이 직접 저장된다. 스택(Stack) 영역에 저장되며, 데이터 크기가 고정되어 있다. int, double, boolean 타입 등이 해당된다.
  • 참조형(Reference Type): 변수에 실제 값이 아니라 객체의 주소인 참조값이 저장된다. 객체는 힙(Heap) 영역에 생성되며, 변수는 해당 객체가 위치하는 메모리 주소를 참조한다. String, 배열, 사용자 정의 객체 등이 해당된다.

'JAVA' 카테고리의 다른 글

[JAVA] 패키지란?  (0) 2025.09.13
[JAVA] 가비지 컬렉션(GC)와 NPE  (0) 2025.09.13
[JAVA] 변수와 초기화  (0) 2025.09.13
[JAVA] 클래스, 객체, 인스턴스란?  (0) 2025.09.13
[JAVA] OOP(객체 지향 프로그래밍)이란?  (0) 2024.04.25