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 |