성실한 사람이 되자

성실하게 글쓰자

This is spear

JAVA_SPRING/JAVA

자바 기본자료형(Primitive data type)을 왜 사용할까?

Imaspear 2022. 1. 29. 13:19
728x90

Validation을 통해 데이터 타입이 들어오는 값을 검증하는 공부를 하면서 기본자료형에 null 타입이 들어오면 Null 예외가 발생해 오류가 던져지는 모습을 경험했다. 빈 칸도 받을 수 있다면 오류가 발생하지 않을텐데라는 생각을 했고, 왜 기본 자료형을 사용하는지 의문이 들었다. 하지만, 여러 자료들을 찾아보면서 내가 처음 생각한 방법부터 틀렸고, 기본 자료형과 참조 자료형을 적재 적소에 사용해야한다는 것을 알았다.

 

기본 자료형과 객체화된 기본 자료형의 차이

일단 기본 자료형과 객체화된 기본 자료형에 대한 차이를 알아봤다.

identity의 유무

기본 자료형은 값만 가지는 상태이고, 객체화된 기본 자료형은 값 외에도 식별자라는 신원(identity)를 가진다.

null 값의 존재

기본 자료형에 저장되는 값은 전부 기능적으로 완전하게 정의된 값이지만 객체화된 기본 자료형에 저장되는 값은 아무 기능이 없는 null값이 존재한다.

만약 int라고 정의한 정수 값에 null 값이 존재한다면 그 데이터는 우리에게 신뢰를 주지 않는다는 생각을 했다.

효율적인 측면

기본형 타입은 스택 메모리에 저장되고 호출이 되면 스택 메모리에서 바로 출력이 된다. 하지만 참조형 타입인 객체화된 기본 자료형 같은 경우 Heap 메모리에 생성이 되고, 접근하려면 Stack 영역에 존재하는 일종의 포인터를 이용해 접근해야 하기 때문에 기본형 타입이 더 효율적인 측면을 볼 수 있다.

  • 테스트 코드
  • class CompareTypeTest { Long k = 100000000L; @AfterAll static void afterAll() { } @Test void priTest() { int a = 0; for (int i = 0; a < k; a++) { a += i; } } @Test void refTest() { Integer a = 0; for (Integer i = 0; i < k; i++) { a += i; } } }

 

적재적소에 사용하는 방법

기본 자료형

== 와 같은 operator를 이용하는 데 사용할 수 있다.

객체화된 기본 자료형

컬렉션의 요소, 키, 값으로 사용할 때, 컬렉션에는 기본 자료형을 넣을 수 없으므로 객체화된 자료형을 써야하는 경우이다.

 

결론

기본 자료형을 잘 사용하면 효율적인 코드 작성도 가능하고, 기본 자료형으로 선언한 데이터는 null 값을 가지지 않아 데이터에 대한 신뢰도가 올라가기 때문에 기본 자료형을 적극적으로 사용하고, 특정한 상황에서만 객체화된 기본 자료형을 사용하면 된다.

 

참고

Primitive type & Reference type | 👨🏻‍💻 Tech Interview

기본자료형 & 참조자료형

[Java] 기본 자료형과 참조 자료형

Effective Java #49 객체화된 기본 자료형 대신 기본 자료형을 이용하라