5.1 데이터 타입 분류
- 참조 타입 : 객체의 번지를 참조 (배열 타입, 열거 타입, 클래스, 인터페이스)
// 기본 타입 : 정수 타입, 실수 타입, 논리 타입
기본 타입으로 선언된 변수 | 참조 타입으로 선언된 변수 | |
저장되는 값 | 값 자체를 저장 | 객체가 생성된 메모리 번지를 저장 |
// 객체 = 데이터(필드) + 메소드
// 변수: 스택에 저장, 객체: 힙에 저장
5.2 메모리 사용 영역
* 메모리 영역(Runtime Data Area) : java 명령어로 JVM이 구동되면 JVM은 운영체제에서 메모리 영역을 할당받아 구분해 사용
//메모리 관리: c에서는 운영체제, 자바에서는 JVM
1) 메소드 영역
: 바이트코드 파일을 읽은 내용이 저장됨
- 클래스별로 상수, 정적 필드, 메소드, 생성자 코드 등이 저장됨
2) 스택 영역
: 메소드를 호출할 때 마다 생성되는 프레임이 저장되는 영역 (메소드 호출 끝나면 프레임은 자동 제거됨)
- 프레임 내부에는 로컬 변수 스택이 있음 (기본 타입 변수, 참조 타입 변수가 생성되고 제거됨)
//스레드: 병렬처리
//FILO
3) 힙 영역
: 객체가 생성되는 영역
5.3 참조 타입 변수의 ==, != 연산
: 변수의 값이 같은지 여부를 조사 (참조타입 변수의 값은 객체의 번지이므로 번지 비교가 됨, 동일 객체 참조 여부)
//내용비교 : equals()
5.4 null과 NullPointerException
- 참조 타입 변수는 null 가질 수 있음 (= 아직 번지를 저장하고 있지 않다는 뜻)
null을 초기값으로 가질 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성됨
* NullPointerException : 변수가 null인 상태에서 객체의 데이터나 메소드를 사용하려 할 때 예외 발생
- 객체를 참조하던 참조 타입 변수에 null 대입 시 해당 객체 사용 불가 -> Garbage Collector 실행해 자동 제거
'언어 > java' 카테고리의 다른 글
[Java] 6. 클래스 (2) - 5~7 (0) | 2025.03.22 |
---|---|
[Java] 6. 클래스 (1) 1~4 (0) | 2025.03.22 |
[Java] 5. 참조 타입 (3) - 7~10 (2) | 2025.03.16 |
[Java] 5. 참조 타입 (2) - 5~6 (1) | 2025.03.16 |