티스토리 뷰
1. 기본 타입 (Primitive type)
정수, 실수, 문자, 논리 리터럴을 저장하는 타입을 말하고 원시 타입이라고도 부른다.
- 정수형 : byte, short, int, long
- 실수형 : float, double
- 문자형 : char
- 논리형 : boolean
실제 데이터 값을 저장하는 타입이다.
2. 참조 타입 (Reference type)
간단하게 말하자면 기본 타입을 제외한 타입들을 말한다. 객체의 주소를 저장하는 타입이다.
ex) 문자열, 배열, 열거, 클래스, 인터페이스
Java에서 실제 객체는 Heap 영역에 저장되며 참조 타입 변수는 스택 영역에 실제 객체들의 주소를 저장하여 객체를 사용할 때마다 참조 변수에 저장된 객체의 주소를 불러와 사용하는 방식이다.
Stack 영역
지역 변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값등이 생성되는 영역이다. 메소드를 호출할 때마다 스택 영역이 생성되고, 기본 타입 변수나 참조 타입 변수가 쌓이고 사라지고 반복한다.
기본 타입 변수의 경우에 int a = 10; 이라는 코드를 작성했다면 정수 값이 할당될 수 있는 a라는 이름의 메모리 공간이 스택 영역에 생성되고 10이라는 값이 들어간다.
참조 타입 변수의 경우에는 클래스 Person p = new Person(); 이라는 코드를 작성했다면 p라는 이름의 메모리 공간이 스택 영역에 생성되고 생성된 p의 인스턴스는 Heap 영역에 생성된다.
스택 영역에 생성된 p는 Heap 영역에 생성된 p의 인스턴스 주소 값을 가지게 된다.
Heap 영역
new 키워드로 생성된 객체와 배열이 생성되는 영역이다. 메소드 영역에 로드된 클래스만 생성이 가능하고 가비지 컬렉터가 참조되지 않는 메모리를 확인하고 제거하는 영역이다.
3. 기본 타입과 참조 타입의 차이
1. Null 포함 가능 여부
기본 타입은 null을 담을 수 없지만 참조 타입은 가능하다.
2. 제네릭 타입에서 사용 가능 여부
마찬가지로 기본 타입은 제네릭 타입에서 사용할 수 없지만, 참조 타입은 가능하다.
3. 접근 속도, 메모리 양
기본 타입이 참조타입에 비해 접근 속도가 훨씬 빠르고 메모리 양도 훨씬 적게 사용한다.
참조 자료
'Programming > 자바 (Java)' 카테고리의 다른 글
자바 명명 규칙 (Java Naming Convention) (0) | 2021.01.15 |
---|