반응형
리액트+스프링부트 프로젝트를 진행하며 Java의 데이터 타입에 대해서 공부하게 되었는데, 자바스크립트에는 없는 타입들이 존재했다. 그래서 각각의 차이에 대해서 간단하게 정리해보고자한다.
1. Long? long?
해당 타입은 처음본 타입이었는데 도메인에서 id값에 사용하는 것 같았다. 근데 대문자로 시작하는 것이 있고 소문자로 시작하는 것이 있었는데 처음에는 두가지가 같은 줄 알았다. 그럼 어떤 차이가 있을까?
먼저, Long과 long은 원시타입이냐, 참조타입이냐의 차이가 있다. 원시타입은 정수, 실수, 문자 등 실제 메모리에 데이터 값을 직접 저장하는 타입이고, 참조타입은 메모리 주소 값을 통해 객체를 참조하는 타입이라고 한다. 그래서 결론은, long은 원시타입, Long은 참조타입이라는 것이다. 또한, 원시타입은 null 할당이 불가능하고, 참조타입은 가능하다는 차이가 있다.
long
- 원시 타입 (실제 메모리에 데이터 값을 직접 저장하는 타입)
- null 값을 가질 수 없음, 기본 값 0
Long
- 참조 타입 (메모리 주소 값을 통해 객체를 참조하는 타입)
- null 값을 가질 수 있음
보통 도메인에서 id값에 Long을 사용한다고 하는데 Long을 사용하면 객체를 생성하는 시점에서 기본값이 null이기 때문에 값이 없다는 것을 잘 표현할 수 있다고 한다. long을 사용하면 기본값이 0이 되기 때문에 id가 없을때를 나타낼 수 없기에 해당 id 값이 not null이 보장된다면 long을 사용해도 좋다고 한다. 원시타입은 참조타입에 비해 성능이 좋다는 장점을 가지고 있어 해당 경우에는 long을 많이 사용하는 것 같다.
2. int와의 차이
그렇다면 int와는 어떤 차이가 있을까?
Int
- 32bit(=4byte)
- 정수를 나타냄
- 범위 : -2147483648 ~ 2147483647
Long & long
- 64bit(=8byte)
- 정수를 나타냄
- 범위 : -9223372036854775808 ~ 9223372036854775807
- int에 비해 많은 메모리를 필요로하며, 속도도 느림
반응형