2020-8-22 Java Type
Primitive vs Reference Type
- 자바는 기본적으로 기본형과 참조형이 있다.
기본형
- 8가지의 기본형타입이 있다.
- 사용전에 반드시 선언되어야한다.
- OS에 따라 자료형 길이가 변하지 않는다.
- 비객체 타입. 따라서 null안된다. primitive에 null넣고 싶으면 wrapper를 써라
- 스택에 저장된다
참조형
- 기본형을 제외한 나머지 모두가 참조형이다.
- java.lang.object를 상속하는 모든 클래스를 지칭. new로 인해 생성되는 것들은 Heap영역에 생성되고 GC가 돌면서 메모리해제한다.
- 클래스타입, 인터페이스타입, 열거형, 배열타입이 존재
- null허용
- 런타임에러가 생긴다.
언제사용하나?
- primitive의 경우 사용할떄 반드시 갑이 할당되야되서 상수에서 많이 활용한다. Optinal이 지원된다 하더라도 primitive는 기본적으로 null을 허용하지 않기때문에 더 괜찮다고 생각된다.
- Wrapper의 경우 빌트인 메서드를 활용하거나 Collections나 제네릭에서 많이 활용된다.
느낀점
- 작년 소마에 들어오기 전에 프로젝트를 한적이 있었다. 같이하던분께서 나에게 왜 int가 아닌 Integer를 사용했는지 물어셨다. 당시 그 상황에서는 당연히 null이 들어가면 안되는 상황이였기때문에 int여야됬는데 나는 AutoBoxing과 UnautoBoxing의 개념도 없어서 그냥 int나 Integer나 상관없다고 생각했다. 시간이 흘러 프로그래밍에 대한 개념이 생기면서 적어도 primitive과 Wrapper클래스의 차이에 대해서는 안다. 하지만 사용처에 대해서는 정확하게 몰랐다. Wrapper가 단순히 Collectino에서 활용된다고 들었을뿐.. 최근 면접때 언제사용하냐고 질문이 들어와서 답을 잘 못했다. 제네릭의 등장으로 인해 많이 활용된다는 답변을 들었다. 알고 잘쓰자.
Written on August 22, 2020