타오름
조각보
타오름
전체 방문자
오늘
어제
  • 조각보
    • DEVELOPER B 🌱
      • Programming
      • Java
      • Spring | SpringBoot
      • JPA
      • Database
      • DS | Algorithms
      • CS
      • Git | Github
      • IDE

블로그 메뉴

  • HOME
  • TAG
         
        

CALENDAR

        
«   2026/05   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
    

티스토리

hELLO · Designed By 정상우.
타오름

조각보

[Java] 변수의 원시 타입과 래퍼 클래스(Primitive Type & Wrapper Class)
DEVELOPER B 🌱/Java

[Java] 변수의 원시 타입과 래퍼 클래스(Primitive Type & Wrapper Class)

2021. 10. 5. 23:48

 

 

 

자바 코드를 보면 종종 변수가 같은 정수형인데도

어느 곳에서는 int를 사용하고 다른 곳에선 Integer를 사용하는 것을 볼 수 있습니다. 

 

 

왜 같은 형인데도 표기 방법이 다를까요?

 

 

이것은 변수의 원시 타입(Primitive Type)과 래퍼 클래스(Wrapper Class)의 관계로 알 수 있습니다.

 

 

# 원시 타입 (Primitive Type)

    • 기본형이라고도 부르며, 실제 연산에 사용되는 변수로 모두 8 종류가 있습니다. (byte, short, int...)

 

    • 기본형은 반드시 사용하기 전에 선언되어야 합니다.

 

    • OS에 따라 자료형의 길이가 변하지 않습니다.

 

    • 비객체 타입으로, null 값을 가질 수 없습니다. 

 

 

 

여기서 중요한 것은 Primitive Type은 비객체 타입이라는 건데요. 

 

 

프로그램에 따라서 이런 Primitive Type을 객체로 취급해야 하는 경우가 종종 생깁니다.

 

 

그럴 때 Primitive Type을 객체 타입으로 변환해주는 것이 바로 래퍼 클래스(Wrapper Class)입니다. 

 

 

# 래퍼 클래스 (Wrapper Class)

    • 인수로 데이터 타입을 전달 받아, 해당 값을 가지는 객체로 만들어주는 클래스입니다. 

 

    • 추가적으로 void도 래퍼 클래스를 통해 변환된 Void도 존재합니다. 

 

    • 내부에 멤버 변수가 final로 선언 되어 있습니다. 

 

    • 기본 타입을 객체로 변환하는 과정을 박싱(Boxing)이라하며 반대 과정을 언박싱(UnBoxing)이라 합니다.

 

    • 자동화된 박싱과 언박싱을 오토 박싱(AutoBoxing)과 오토언박싱(AutoUnBoxing)이라 합니다. 

 

    • 주의할 점은 객체 이므로 비교 연산시에는 동등 연산자(==)가 아닌 equals() 메소드를 이용해야 합니다.

       (동등 연산자를 이용할 시에는 두 인스턴스의 주소값을 비교하므로 false가 나옵니다) 

 

 

 

----------- Boxing ---------->
Primitive Type Wrapper Class
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
<---------- UnBoxing ----------

 

 

 

# 오토 박싱(Auto Boxing)과 오토 언박싱(Auto Unboxing)

 

 

JDK 1.5부터는 자바 컴파일러가 박싱과 언박싱을 자동으로 처리해주는데 이걸 오토 박싱, 오토 언박싱이라 합니다.

 

 

오토 박싱을 이용하면 new 키워드를 사용하지 않고도 자동으로 인스턴스를 생성할 수 있고, 

반대로 오토 언박싱을 통해 메소드 호출 없이 인스턴스에 저장된 값을 바로 참조할 수 있습니다.

 

 

 

예시)

 

// Boxing & UnBoxing
Character ch = new Character('A');	// Boxing
char c = ch.charValue(); 		// UnBoxing


// AutoBoxing & AutoUnBoxing
Integer num = 8;  		// AutoBoxing
int n = num; 			// AutoUnBoxing

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
    'DEVELOPER B 🌱/Java' 카테고리의 다른 글
    • [Java] 변수의 명명 규칙과 표기법
    • [Java] 자바 언어의 특징
    • [Java]Java의 다형성, 오버라이딩(Overriding)
    • [Java] 화면에서 입력 받기 : 스캐너(Scanner)
    타오름
    타오름

    티스토리툴바