단비의 개발블로그

[JAVA] 변수의 기본형(primitive type)과 참조형(reference type), Boxing과 Unboxing 본문

Java & Kotlin

[JAVA] 변수의 기본형(primitive type)과 참조형(reference type), Boxing과 Unboxing

단비냥 2021. 3. 17. 22:41
반응형

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
Comments