반응형
JAVA
기본형(Primitive Type)
byte, short, int, long, float, double, boolean, char, void
위와 같은 변수들이 있다
특징으로는 다음과 같다.
- 실제 연산에 사용된다
- 모두 소문자로 시작된다
- 비객체 타입이므로 null 값을 가질 수 없다
- 저장공간에 실제 값을 가진다
참조형(Reference Type)
위의 8가지 자료형을 제외한 나머지가 모두 참조형이다.
특징으로는 다음과 같다.
- 값이 저장되는 공간의 주소를 저장하는 공간으로 객체의 주소를 저장한다
- null로 초기화 시킬 수 있다
- 클래스형(Class Type), 인터페이스형(Interface Type), 배열형(Array Type) 이 있다
Wrapper Class
기본형에 null을 넣고 싶거나 객체로 다루고 싶을 경우 Wrapper Class를 활용하면 된다.
래퍼 클래스는 기본형을 클래스로 감싼 형태이다.
인스턴스를 생성(Heap 메모리에 저장)하여 상속 및 재사용이 가능하다.
ex) int -> Integer
long -> Long
char -> Char
Boxing
기본 자료형을 래퍼클래스로 변환하는 것을 Boxing 이라고 한다.
int primitive = 10;
Integer boxing = new Integer(primitive);
Unboxing
반대로 래퍼클래스를 기본 자료형으로 변환하는 것이 Unboxing이다.
Integer reference = new Integer(10);
int unboxing = reference.intValue();
JDK 1.5 부터는 이것을 자동으로 해주는 것이 가능하다.
이것이 AutoBoxing, AutoUnboxing 이다.
Integer a = new Integer(10);
int b = a; // 오토언박싱
Integer c = b; // 오토 박싱
참고
Wrapper Class의 값은 == 등의 연산자 사용이 불가능하다.
== 이 연산자는 내부의 값을 저장하는 것이 아니라 참조 주소를 비교하기 때문이다.
Wrapper는 객체이므로 서로의 참조 주소가 다르다.
따라서 동치 비교를 할 때는 내부의 값만 비교하는 equals() 같은 메소드를 사용한다.
반응형
'Java & Kotlin' 카테고리의 다른 글
코틀린의 변수와 자료형 (Kotlin) (0) | 2021.03.23 |
---|