JAVA

참조 변수와 일반 변수에 대한 이해

비보호신호등 2024. 7. 8. 22:56

자바에서 변수는 크게 두 가지 종류로 나뉩니다: 기본 데이터 타입 변수 (일반 변수)와 참조 데이터 타입 변수 (참조 변수)입니다. 이 두 가지 변수는 메모리 할당 방식과 데이터 접근 방식에서 큰 차이가 있습니다.

1. 일반 변수 (Primitive Variables)

**기본 데이터 타입(Primitive Data Types)**은 자바에서 제공하는 가장 기본적인 데이터 타입으로, 실제 값을 직접 저장합니다. 자바에서는 총 8개의 기본 데이터 타입을 제공합니다:

  • byte: 1바이트 정수
  • short: 2바이트 정수
  • int: 4바이트 정수
  • long: 8바이트 정수
  • float: 4바이트 부동 소수점 숫자
  • double: 8바이트 부동 소수점 숫자
  • char: 2바이트 문자
  • boolean: 1비트 논리값 (true 또는 false)

2. 참조 변수 (Reference Variables)

**참조 데이터 타입(Reference Data Types)**은 객체의 메모리 주소를 저장하는 변수입니다. 참조 데이터 타입에는 배열, 클래스, 인터페이스 등이 포함됩니다. 참조 변수는 실제 데이터가 저장된 힙 메모리의 주소를 참조합니다.

 

3. 주요 차이점

  1. 메모리 할당
    • 기본 데이터 타입 변수: 스택 메모리에 실제 값을 저장합니다.
    • 참조 데이터 타입 변수: 스택 메모리에 객체의 메모리 주소를 저장하고, 실제 데이터는 힙 메모리에 저장됩니다.
  2. 데이터 접근
    • 기본 데이터 타입 변수: 직접 값을 접근하고 조작합니다.
    • 참조 데이터 타입 변수: 객체의 메모리 주소를 통해 데이터를 접근하고 조작합니다.
  3. 기본 값
    • 기본 데이터 타입 변수: 선언 시 기본 값이 할당됩니다 (예: int는 0, boolean은 false).
    • 참조 데이터 타입 변수: 선언 시 null 값이 할당됩니다.

예제

 

 

위 예제에서 num1과 num2는 기본 데이터 타입 변수로, num2에 num1의 값을 복사한 후 값을 변경해도 서로 영향을 미치지 않습니다. 반면에 arr1과 arr2는 참조 데이터 타입 변수로, arr2에 arr1을 복사하면 같은 배열 객체를 참조하게 되어 하나의 배열 값이 변경되면 두 변수 모두에 영향을 미칩니다.

결론

기본 데이터 타입 변수와 참조 변수의 차이를 이해하는 것은 자바 프로그래밍에서 매우 중요합니다. 기본 데이터 타입은 실제 값을 저장하고, 참조 변수는 객체의 주소를 저장합니다. 이 차이를 이해함으로써 변수 사용 시 발생할 수 있는 오류를 줄이고, 프로그램의 효율성을 높일 수 있습니다.