코딩 공부중에 하나배운김에 작성한다.
자바에서는 두가지 주요한 데이터타입이 있다.
1. 기본타입과 참조타입이란?
- 기본타입(primitive type, 값타입, 원시타입 이라고도함)
- 기본타입은 boolean, char, byte, short, int, long, float, double 과 같은 타입이다.
- 메모리상에 직접 값을 저장한다.
- 예를들면 int 변수는 32비트 정수 값을 직접저장한다.
- 참조타입(reference type)
- 참조타입은 클래스의 인스턴스(객체), 배열, 인터페이스 등을 포함한다.
- 참조타입변수는 메모리주소를 저장한다.
- 이 주소는 해당 객체의 실제 데이터가 저장된 힙 메모리 영역을 가르킨다.
2. 메모리 사용률
참조타입은 기본타입보다 일반적으로 더 많은 메모리를 사용하게된다. 참조타입은 객체를 생성하고 관리해야하고, 그 과정에서 메타데이터 정보(클래스정보, 가비지컬렉션상태 등) 과 함께 객체의 실제 데이터를 저장해야되기 때문이다.
3. 박싱과 언박싱
기본타입을 해당하는 참조타입으로 변환(예:int를 Integer로) 하는것은 '박싱(boxing)' 이라고 하고, 이 과정은 추가메모리를 사용한다.
반대로 참조타입에서 기본타입으로 변환은 '언박싱(unboxing)' 이라고 한다.
박싱(boxing) 예제
// 기본 타입 int
int primitiveInt = 10;
// primitiveInt는 Integer 참조 타입으로 박싱됨.
Integer boxedInt = Integer.valueOf(primitiveInt);
언박싱(unboxing) 예제
// 참조 타입 Integer
Integer boxedInt = Integer.valueOf(10);
// boxedInt는 int 기본 타입으로 언박싱됨.
int unboxedInt = boxedInt.intValue();
4. 결론
성능이나 메모리 사용이 크게 문제되지 않는 경우에는 참조타입을 사용하여 객체지향프로그래밍과 관련된 다양한기능을 활용할수있다. 하지만, 성능이 중요한 상황에서는 가능한 한 기본 타입을 사용하는것이 좋다.
'Java > Java😊' 카테고리의 다른 글
[Java] 리스트(List)와 배열(Array) 개념과 사용법 + 자료구조 (0) | 2023.06.13 |
---|---|
[Java] call by value 는 있지만, call by reference 는 없다. (0) | 2023.06.07 |
[Java] TCP 통신에서 클라이언트의 국가를 확인하는 방법 (0) | 2023.05.10 |
[Java] enum 개념과 예시 (0) | 2023.05.10 |
[Java] 다중 파일 업로드 (MultipartFile[]) window,linux (0) | 2022.04.20 |