본문 바로가기
언어/java

[Java] 5. 참조 타입 (1) - 1~4

by 젼젼39 2025. 3. 16.

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