본문 바로가기
Language/Java

자바 Primitive Type, Wrapper Class 사용이유

by wakestand 2020. 2. 10.
반응형

자바에서는 원시 타입(Primitive Type), 래퍼 클래스(Wrapper Class)라는 말이 있는데

래퍼 클래스는 원시 타입을 객체화한 것으로

 

자바 객체화(인스턴스화) 알아보기

위 스크린샷을 보면 ObjectTest 클래스 영역에 정의한 i를 출력하려고 해도 에러가 뜨면서 출력이 되지 않는 것이 보이는데 i로 선언한게 없는데 i 값을 어떻게 가져옴? 이런 에러가 뜨는 것이다 클래스는 메소드..

wakestand.tistory.com

int pri = 20; 으로 작성했을 경우 단순히 숫자로서만 기능하나

Integer wrap = 10; 으로 작성했을 경우

객체 형태로 생성되어 null을 넣거나 메소드를 사용할 수 있게 된다

 

Wrapper 형태는 객체로 사용되는 것 외에도 <> 안에 들어가는 Generics에 사용된다

 

정리해보자면 Wrapper를 사용하는 이유는

원시 타입을 객체로 만들어 null을 넣거나 메소드를 사용할 수 있고

.toString() 메소드를 사용해 String 타입으로 바로 변환할 수 있다

또한 Generics(<>) 는 Wrapper 형태로만 들어올 수 있다

 

다음으로는 boxing과 unboxing인데

각각 원시 타입을 래퍼 클래스로,

래퍼 클래스를 원시 타입으로 변환할 때 사용하는데

 

예제 코드에는 Integer = (Integer) int변수 이런 식으로 사용하지만

Java 5 이후로는 이렇게 캐스팅을 하지 않고

Integer 변수명 = int 변수명;

이런 식으로 해도 적용이 되는데

 

이걸 Autoboxing, AutoUnboxing이라 한다

 

예제에 사용한 코드는 아래와 같다

 

import java.util.ArrayList;

public class PrimitiveExample {
	
	public static void main(String[] args) {
		Integer wrap = 10;
		int pri = 20;
		
		wrap.byteValue(); // 래퍼 클래스는 원시 타입의 객체화
		wrap.toString(); // 래퍼 타입을 문자열로 변환
		wrap = null; // 래퍼 클래스에는 null이 들어감
        	// 래퍼 타입은 <Generics> 안에 들어감
		ArrayList<Integer> list = new ArrayList<Integer>();
		
		// 앞에 (Integer), (int)를 붙이지 않아도 자동으로 변환이 됨(Auto boxing/unboxing)
		wrap = (Integer) pri; // boxing(Primitive to Wrapper)
		pri = (int) wrap; // unboxing(Wrapper to Primitive)
		
	}

}
반응형

댓글