자바/자바 문법

참조 변수와 기본 자료형 변수

Blue_bull 2025. 1. 21. 18:58

1. 참조 변수와 기본 자료형 변수란?

(1) 기본 자료형 변수

  • 정의: 데이터를 직접 저장하는 변수.
  • 특징:
    • 변수에 실제 값이 저장됩니다.
    • 값이 저장된 메모리 주소를 직접 참조하지 않음.
  • 사용 예:
    • 숫자, 문자, 논리 값을 저장.
  • 예제:
    int a = 10; // a는 값 10을 직접 저장

(2) 참조 변수

  • 정의: 객체나 배열과 같은 복합 데이터의 메모리 주소(참조값)를 저장하는 변수.
  • 특징:
    • 변수에 데이터가 아니라, 데이터가 저장된 메모리의 주소(참조값)가 저장됨.
    • 객체와 배열은 모두 참조 변수로 처리.
  • 사용 예:
    • 문자열, 배열, 사용자 정의 클래스 객체 등.
  • 예제:
    String str = "Hello"; // str은 "Hello" 객체가 저장된 주소를 참조
    int[] arr = {1, 2, 3}; // arr은 배열 객체의 주소를 참조

2. 참조 변수와 기본 자료형 변수의 종류

(1) 기본 자료형 변수의 종류

Java의 8가지 기본 자료형:

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

(2) 참조 변수의 종류

  • 문자열: String
  • 배열: int[], String[]
  • 사용자 정의 클래스: 예: MyClass obj = new MyClass();
  • Wrapper 클래스: Integer, Double, Boolean 등.

3. 참조 변수와 기본 자료형 변수가 값을 받아들이는 방식

(1) 저장 위치

  • 기본 자료형 변수:
    • 데이터가 스택 메모리에 직접 저장됨.
  • 참조 변수:
    • 참조 변수는 스택 메모리에 저장되며, 해당 값(참조값)은 힙 메모리에 저장된 실제 객체를 가리킴.

(2) 값을 대입하는 방식

구분 기본 자료형 변수 참조 변수
대입 방식 값을 직접 대입 객체의 참조값(메모리 주소)을 대입
예시 int a = 10; String str = "Hello";
결과 변수 자체에 값이 저장됨 변수는 힙 메모리에 저장된 객체를 가리킴

(3) 값 복사의 결과

구분 기본 자료형 변수 참조 변수
복사 방식 값을 그대로 복사 객체의 참조값(주소)을 복사
변경 시 영향 복사본 변경 시 원본에 영향 없음 복사본 변경 시 원본도 영향을 받을 수 있음
예제
```java
// 기본 자료형
int a = 10;
int b = a; // 값 복사
b = 20;
System.out.println(a); // 출력: 10 (원본 영향 없음)

// 참조 변수
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1; // 참조값 복사
arr2[0] = 10;
System.out.println(arr1[0]); // 출력: 10 (원본 영향 있음)

```


(4) 변경 시 영향

  • 기본 자료형 변수:
    • 복사된 변수의 값이 변경되어도 원본 변수에는 영향을 미치지 않음.
  • 참조 변수:
    • 복사된 변수와 원본 변수는 같은 객체를 참조하기 때문에, 복사된 변수로 객체를 변경하면 원본도 영향을 받음.

4. 정리

특징 기본 자료형 변수 참조 변수
저장 위치 스택 메모리 스택(참조값) + 힙(객체 데이터)
값 대입 방식 데이터를 직접 대입 객체의 참조값을 대입
값 복사의 결과 복사된 값이 독립적으로 동작 복사된 참조값이 동일 객체를 가리킴
변경 시 영향 복사본이 변경돼도 원본에 영향 없음 복사본이 변경되면 원본도 영향을 받음

요약:

  • 기본 자료형 변수는 값 자체를 저장하며, 변경 시 독립적으로 동작합니다.
  • 참조 변수는 객체의 메모리 주소를 저장하며, 동일 객체를 참조하는 변수 간에는 변경 사항이 공유됩니다.

'자바 > 자바 문법' 카테고리의 다른 글

Casting(형변환)이란?  (0) 2025.01.26
new 연산자란?  (1) 2025.01.24
중복 선언 오류  (3) 2025.01.15
자바 throw 키워드 기초 이해.  (0) 2025.01.14
자바 try-catch  (0) 2025.01.14