[Java]기본형과 참조형

원지윤·2023년 5월 1일
0

java공부

목록 보기
3/4

java에는 두가지 타입이 있습니다. 원시형, 기본형이라고도 하는 Primitive Type과 참조형인 Reference Type이 있습니다.
이 두가지 타입의 대해서 알아봅시다.

기본형(Primitive Type)

  • 기본형은 변수에 값 자체를 저장하고, 메모리의 stack영역에 생성됩니다.
  • 사용하기 전에 반드시 선언을 해줘야하고, 값을 초기화해주지 않으면 자료형에 맞는 값으로 알아서 초기화가 됩니다.
  • 비객체 타입이며, Null 값을 가질 수 없습니다.

참조형(Reference Type)

  • 기본형을 제외한 모두를 참조형이라고 합니다.
    • 이는 기본적으로 Object 클래스를 최상위 클래스로 하는 모든 클래스들을 다 Reference Type이라고 합니다.
    • 기본형을 제외한 클래스들은 모두 Object클래스를 최상위 클래스로 두고 있기에, 기본형을 제외하고는 모두 Reference Type이라고 할 수 있습니다.
  • 메모리 상에서 객체가 존재하는 주소를 저장하며, 메모리의 heap 영역에 저장합니다.
    • Stack 메모리에는 참조값만 저장하고, 그 주소가 가리키고 있는 Heap 메모리에 실제값을 저장하고 있습니다.
  • 클래스형, 인터페이스형, 배열형이 있습니다.
  • 기본형과 다르게 Null을 담을 수 있습니다.
int a = null; //불가능
Integer b = null; // 가능
  • 제네릭 타입에서 사용할 수 있습니다.
 List<int> a; //불가능
 List<Integer> b; // 가능
출처: https://www.baeldung.com/java-primitives-vs-objects
  • Reference Type은 값을 필요로 할 때마다 Unboxing 과정을 거쳐야 하니, primitive type 과 비교해서 접근 속도가 느려지게 됩니다.
    • 다만 엄청 큰 값을 복사할 때는 기본형보다는 참조값만 넘기면 되는 참조형을 사용하는 것이 유리할 수 있습니다.

기본형과 참조형 메모리 비교

기본형참조형
boolean - 1bitBool - 128 bits
byte - 8bitsByte - 128 bits
short,char -16bitsShort,Char - 128bits
int, float - 32bitsInteger,Float - 128bits
long, double - 64bitsLong,Doble - 192bits

기본형은 참조형에 비교하여 훨씬 빠르고 훨씬 적은 메모리를 필요로 합니다.

기본형/참조형 간단 정리

기본형참조형
저장위치stack영역에 값 자체 저장stack영역에는 참조값, Heap영역에 실제 값을 저장
Null저장불가능가능
Generic사용불가능가능
접근 속도대체로 빠름대체로 느림

출처

https://www.baeldung.com/java-primitives-vs-objects

0개의 댓글