본문 바로가기
책장

(작성중) [이것이 자바다] Chapter 05. 참조 타입

by 예림220 2023. 5. 19.

[목차]

1. 데이터 타입 분류

2. 메모리 사용 영역

3. 참조 타입 변수의 ==, != 연산

4. null과 NullPointerExcpetiom 

5. 문자열 타입

6. 배열 타입

7. 다차원 배열

8. 객체를 참조하는 배열

9. 배열 복사

10. 배열 항목 반복을 위한 향상된 for 문

11. main() 메소드의 Strimg[] 매개변수 용도

12. 열거(Enum) 타입

 

1. 데이터 타입 분류 

자바의 데이터 타입은 크게 기본타입과 참조타입으로 분류된다.

 참조타입이란 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입이 있다.

 객체란 데이터와 메소드로 구성된 덩어리이다. 

  객체 = 데이터(필드) + 메소드 

 

기본타입과 참조타입의 선언된 변수의 차이점 : 저장되는 값

기본타입으로 선언된 변수는 값 자체를 저장하고 있지만, 참조타입으로 선언된 변수는 객체가 생성된 메모리 번지를 저장한다.

 

지역 변수들은 모두 스택이라는 메모리 영역에 생성된다. 

 

2. 메모리 사용 영역

java 명령어로 JVM이 구동되면 JVM은 운영체제에서 할당받은 메모리 영역을 3개의 영역으로 구분해서 사용한다.

 - 메소드 영역

 - 힙 영역

 - 스택 영역

 

- 메소드 영역

메소드 영역은 바이트코드 파일을 읽은 내용이 저장되는 영역으로 클래스별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등이 저장된다. 지금 단계에서는 단순히 바이트코드 파일의 내용이 저장되는 영역이라고 알고있으면 된다. 

 

- 힙 영역 

 힙 영역은 객체가 생성되는 영역이다. 객체의 번지는 메소드 영역과 스택 영역의 상수와 변수에서 참조할 수 있다. 

 

- 스택 영역

스택 영역은 메소드를 호출할 때마다 생성되는 프레임이 저장되는 영역이다. 메소드 호출이 끝나면 프레임은 자동 제거된다. 프레임 내부에는 로컬 변수 스택이 있다. 여기에서 기본 타입 변수와 참조 타입 변수가 생성되고 제거된다.

 

3. 참조 타입 변수의 ==, != 연산

==, != 연산자는 변수의 값이 같은지, 아닌지를 조사한다. 참조 타입 변수의 값은 객체의 번지이므로 참조 타입 변수의 ==, != 연산자는 번지를 비교하는 것이다. 번지가 같다면 동일한 객체를 참조하는 것이고, 다르다면 다른 객체를 참조하는 것이다. 

 

 

4. null 과 NullPointerException 

참조 타입 변수는 아직 번지를 저장하고 있지 않다는 뜻으로 null(널)값을 가질 수 있다. null도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성된다. 

 

자바는 프로그램 실행 도중 발생하는 오류를 예외라고 부른다. 참조 변수를 사용하면서 가장 많이 발생하는 예외 중 하나는

NullPointerException 이다. 변수가 null인 상태에서 객체의 데이터나 메소드를 사용하려 할 때 이 예외가 발생한다. 

(예시)

int [] intArray = null; 

intArray[0] = 10; // NullPointerException

 

 

 

 

 

책[이것이 자바다(개정판)] 일부 내용 발췌 

 

구매 링크

알라딘: 이것이 자바다 (aladin.co.kr)

'책장' 카테고리의 다른 글

모닝 루틴 (23/05/23)  (0) 2023.05.23
모닝 루틴 (23/05/22)  (0) 2023.05.22
모닝 루틴 (23/05/21)  (0) 2023.05.21
모닝 루틴 (23/05/20)  (0) 2023.05.21
[책] 첫 코딩 (with 자바)  (0) 2023.05.20