이론 정리/java

Java에서 기본 타입과 참조 타입의 차이

철매존 2022. 5. 15. 19:13
728x90

Java에서 기본 타입과 참조 타입의 차이

기본 타입(Primitive Type)이란?

== 원시 타입
우리가 실제로 데이터 값을 저장할 때에 사용하는 값이다.

  • 정수형
    • int, long, short, byte ...
  • 실수형
    • float, double
  • 문자형
    • char
  • 논리형
    • boolean

참조 타입(Reference Type)이란?

이름에서 알 수 있듯, 객체의 번지를 참조하는 타입이다.
즉 객체의 주소를 저장하고, 이를 참조하여 사용하는 타입이라 할 수 있다.

String, Long, Integer ...
배열, Enum, 클래스, 인터페이스 등을 사용해서 선언한 변수는 메모리 값을 가지게 되는데, 이런 애들을 참조 타입이라 한다.

둘 간의 간단한 차이

  1. 저장 장소의 차이
    기본 타입은 스택 영역에, 참조 타입은Heap영역에 저장된다.
  2. 속도와 메모리 사용 측면 차이
    기본 타입은 스택 영역에서 그냥 들고오면 되는데, 참조 타입은 힙 메모리에서 가져와서 언박싱해야 한다..따라서 통상적으로 기본 타입이 접근 속도와 메모리 사용 측면에서 훨씬 효율적이다.
    다만, 어어어엄청 큰 숫자를 가져오는 경우는 참조타입이 더 효율적일수도 있긴하다.
  3. Null 허용 여부
    기본 타입은 null이 허용되지 않고, 참조 타입은 null을 담을 수 있다.
  4. 제너릭 타입에서의 사용
    기본 타입은 제너릭 타입에서 사용이 불가능하지만, 참조 타입은 사용 가능하다.

참고로 우리는 웹개발을 할 때에 DTO나 Request, Response 등을 사용하게 될 텐데, 원시 타입은 null을 받을 수 없고 참조 타입은 null을 받을 수 있다.
메모리 효율이 좋다고 덮어높고 기본 타입 쓰다가 피볼수 있으니 주의하자.