일반변수와 참조변수의 특징

제민·2024년 7월 7일

Java 개념 공부

목록 보기
9/21
post-thumbnail

일반변수와 참조변수

프로그래밍에서 변수는 데이터를 저장하기 위한 메모리 공간을 의미합니다.
변수는 크게 일반 변수참조 변수로 나눌 수 있습니다.
이 두 가지 유형의 변수를 이해하는 것은 객체지향 프로그래밍에서 특히 중요합니다.

일반 변수

일반 변수(Primitive Variable)는 기본 데이터 타입을 저장하는 변수입니다.
일반 변수는 값을 직접 저장하며, 이러한 변수들은 메모리의 스택(Stack) 영역에 저장됩니다.
일반 변수는 다음과 같은 기본 데이터 타입을 가질 수 있습니다:

  • 정수형: byte, short, int, long
  • 실수형: float, double
  • 문자형: char
  • 논리형: boolean

예시

int a = 10;          // 정수형 변수 a에 값 10을 저장
double b = 3.14;     // 실수형 변수 b에 값 3.14를 저장
char c = 'A';        // 문자형 변수 c에 문자 'A'를 저장
boolean d = true;    // 논리형 변수 d에 true를 저장

위 코드에서 a, b, c, d는 모두 일반 변수입니다.
각각의 변수는 자신의 타입에 맞는 값을 직접 저장하고 있습니다.

일반 변수의 특징

  • 값 자체를 저장합니다.
  • 메모리의 스택(Stack) 영역에 저장됩니다.
  • 변수의 크기는 데이터 타입에 따라 고정됩니다 (int는 4바이트, double은 8바이트 등).

참조 변수

참조 변수(Reference Variable)는 객체의 메모리 주소를 저장하는 변수입니다. 참조 변수는 실제 데이터를 저장하는 것이 아니라, 데이터가 저장된 메모리 주소를 참조합니다. 객체나 배열과 같은 복합 데이터 타입은 모두 참조 변수를 사용하여 메모리에 저장됩니다. 참조 변수는 메모리의 힙(Heap) 영역에 저장된 객체를 가리키며, 참조 변수 자체는 스택(Stack) 영역에 저장됩니다.

예시

String str = "ObjectTest";  // 문자열 객체를 가리키는 참조 변수
int[] arr = {1, 2, 3, 4, 5};  // 배열 객체를 가리키는 참조 변수

위 코드에서 strarr는 모두 참조 변수입니다.
str은 문자열 객체를, arr는 정수 배열 객체를 가리키고 있습니다.

참조 변수의 특징

  • 객체의 주소를 저장합니다.
  • 참조 변수를 통해 객체의 필드나 메서드에 접근할 수 있습니다.
  • 참조 변수가 가리키는 객체는 힙(Heap) 영역에 저장됩니다.
  • 여러 참조 변수가 동일한 객체를 가리킬 수 있습니다.

참조 변수의 동작 예시

int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;  // arr2는 arr1과 동일한 배열 객체를 가리킴

arr2[0] = 10;

System.out.println(arr1[0]);  // 출력: 10
System.out.println(arr2[0]);  // 출력: 10

코드에서 arr1arr2는 동일한 배열 객체를 가리키고 있습니다.
따라서 arr2를 통해 배열의 첫 번째 요소를 변경하면, arr1을 통해서도 변경된 값을 확인할 수 있습니다.

참조 변수와 일반 변수의 차이점

구분일반 변수참조 변수
저장 내용값 자체객체의 메모리 주소
저장 위치스택(Stack) 영역스택(Stack) 영역 (참조), 힙(Heap) 영역 (객체)
데이터 타입기본 데이터 타입 (int, double 등)객체 타입 (String, 배열 등)
메모리 사용고정된 크기참조 크기 고정, 객체 크기는 가변적

일반 변수와 참조 변수는 데이터 저장 방식과 메모리 사용 방식에서 큰 차이가 있습니다.
일반 변수는 값을 직접 저장하는 반면, 참조 변수는 객체의 주소를 저장합니다.
이러한 차이점은 객체 지향 프로그래밍에서 객체와 배열을 다룰 때 매우 중요합니다.

profile
초보부터 시작하는 개발자 생활

0개의 댓글