728x90
자바의 데이터타입은 크게 2가지로 나눌 수 있음
primitive
- byte, short, int, long 과 같이 size가 정해져 있는 값
- 기본 자료형
- 스택(Stack) 메모리에 존재
- 가벼운 데이터
object
- Byte, Short, Integer, Long, Class 과 같이 주소값을 참조하는 형태
- 객체화된 자료형 (boxed primitive type)
- 변수명.getClass().getName() 으로 Object타입 확인 가능
- 실제 데이터는 힙(Heap) 메모리에 공유하고 래퍼런스만 스택(Stack) 메모리에 존재
- 무거운 데이터
int num_one = Integer.parseInt("123");
Integer number = Integer.valueOf("456");
- 두 개의 차이점은 primitive 타입으로 리턴할 것인지, object 타입으로 리턴할 것인지 차이
- 굳이 객체화된 자료형을 사용할 이유가 없다면 primitive 타입을 쓰는것이 공간 효율적인 측면에서 좋음
- int 사이즈 : 4byte
- Integer 사이즈 : 20byte
Integer.valueOf()
- Wrapper Class인 Integer Object를 반환
- Integer클래스를 반환하기 때문에 산술연산 불가능
- unboxing(Wrapper 클래스 → primitive 자료형) 을 해주면 산술 연산 가능
- 기본형과 달리 null 값 처리 가능하기 때문에 SQL과 연동할 경우 처리 용이
- Integer(객체화된 자료형) 쓰이는 용도
- null 값으로 처리가 유용하기 때문에 SQL과 연동할 경우 즉, DB를 사용해서 쿼리문을 짜줘야하는 경우 유용
- ArrayList 또는 List의 요소, 키, 값으로 사용할 때
- ArrayList<int> 는 안되지만 ArrayList<Integer>로는 사용 가능
참고) Wrapper Class 는 primitive 데이터를 Object데이터화 시킨 Class
Integer.parseInt()
- primitive type인 int형 반환
- 기본 자료형인 int형 값을 반환하기 때문에 산술연산 가능
- 기본형은 null 값을 가질 수 없음
728x90
'[자바] > 자바 문법' 카테고리의 다른 글
[Java] 배열 복사 Arrays.copyOf() vs System.arraycopy() (0) | 2021.10.31 |
---|---|
[Java] Vector 와 ArrayList 차이 (0) | 2021.10.24 |
[Java] return (0) | 2021.10.23 |
[Java] 메모리 구조 (static, stack, heap) (0) | 2021.10.22 |
[Java] autoboxing, unboxing 이란? (0) | 2021.10.22 |