본문 바로가기
Java

Java_Wrapper 클래스

by 유서담 2023. 11. 16.

Wrapper 클래스

 

  • 기본자료형 타입에 대응되는 클래스
  • 기본자료형 값을 가지고 있는 객체를 만들 수 있다
  • 사용해야 할 때
    • 기본자료값이 아닌 객체로 저장해야 할 때
    • 호출할 메소드의 매개변수가 객체를 요구할 때
    • null값이 저장될 가능성이 있을 때
    • 해당 기본자료형값에 대한 다양한 기능을 실행해야 할 때

 

지원하는 Wrapper 클래스

기본자료형 Wrapper 클래스
byte Byte
short Short
int Int
long Long
float Float
double Double
char Character
boolean Boolean

 

 

오토박싱/언박싱

 

오토박싱

  • JAVA 1.5버전부터 도입된 기능
  • 기본자료형 값을 Wrapper 클래스타입의 변수에 저장시키면 자동으로 해당 Wrapper 클래스로 객체를 생성해서 그 객체에 기본자료형 값을 저장하고, 그 객체의 주소값을 참조변수에 대입시킨다

 

Byte wrapper1 = 1;	// Byte wrapper1 = new Byte(1);
Short wrapper2 = 1;	// Short wrapper2 = new Short(1);
Integer wrapper3 = 10000;	// Inteager wrapper3 = new Inteager(10000);
Long wrapper4 = 100000000L;
Float wrapper5 = 3.14f;
Double wrapper6 = 3.14;
Character wrapper7 = 'C';
Boolean wrapper8 = true;

System.out.println(wrapper1);	// "1", toString() 메소드가 반환하는 값이 출력된다
System.out.println(wrapper2);	// "1"

 

 System.out.println(wrapper1);
	-> System.out.println(wrapper1.toString());
	-> Wrapper 클래스들은 Object의 toString() 메소드를
	 해당 기본자료형값을 문자열로 변환해서 반환하도록 재정의하였다.

public class Integer {
	int value;	// 기본자료형값이 저장되는 변수라고 가정한다
	public String toString() {
	return String.valueOf(value);
	}
}

 

 

 

오토 언박싱

 

  • Wrapper 클래스타입의 객체를 참조하는 참조변수를 기본자료형 타입의 변수에 대입하면, 참조변수의 주소값이 변수에 대입되는 것이 아니라 참조변수가 참조하는 Wrapper 객체의 xxxValue() 메소드를 실행해서 획득한 기본자료형 값을 변수에 대입한다
  • 정수, 실수값을 포함하는 Wrapper 클래스 타입의 객체에 대해서 사칙연산, 비교연산 등을 실행하면 자동으로 오토언박싱이 실행되어서 Wrapper 객체에 저장된 기본자료형값이 연산에 활용된다

 

Integer a = 10;
Integer b = 20;
Double c = 3.14;

int x = a;	// int x = a.intValue();
int y = b;	// int y = b.intValue();
double z = c;	// double z = c.doubleValue();

int result = a+b;	// int result = a.intValue() + b.intValue();

 

 

 

Wrapper 클래스의 Integer

 

 

주요 상수

  • MIN_VALUE : int 기본자료형의 최소값
  • MAX_VALUE : int 기본자료형의 최대값

주요 메소드

 

정적 메소드

  • static int Integer.parseInt(String str) : 전달받은 문자열(숫자로 구성된 문자열)을 정수로 변환해서 반환한다
  • static int Integer.parseInt(String str, int radix) : 문자열과 진법을 전달받아서 정수로 변환해서 반환한다
  • static String toBinaryString(int i) : 전달받은 정수를 2진수로 구성된 문자열로 반환한다
  • static String toOctalString(int i) : 전달받은 정수를 8진수로 구성된 문자열로 반환한다
  • static String toHexString(int i) : 전달받은 정수를 16진수로 구성된 문자열로 반환한다
  • static int min(int x, int y) : 작은 수를 반환한다
  • static int max(int x, int y) : 큰 수를 반환한다
  • static int sum(int x, int y) : 합계를 반환한다
  • static Integer valueOf(int i) : 전달받은 정수를 포함하는 Integer객체의 주소값을 반환한다
  • static Integer valueOf(String str) : 전달받은 문자열이 표현하는 정수를 포함하는 Integer객체의 주소값을 반환한다
  • static Integer valueOf(String str, int radix) : 정수(전달받은 문자열이 표현하는)를 포함하는 Integer객체의 주소값을 반환한다

멤버 메소드

  • int intValue() : Integer객체가 가지고 있는 정수값을 반환한다( 오토언박싱이 지원되면서 사용할 일이 거의 없음 )

Wrapper 클래스의 Integer 메소드 예시

 

 

 

문자열을 숫자(정수, 실수)로 변환하기

 

Wrapper 클래스의 정적 메소드를 활용하면 문자열을 숫자로 변환할 수 있다

  • int Integer.parseInt(String str)
  • long Long.parseLong(String str)
  • double Double.parseDouble(String str)
  • Integer Integer.valueOf(String str)
  • Long Long.valueOf(String str)
  • Double Double.valueOf(String str)

 

숫자를 문자열로 변환하기

 

String 클래스 정적 메소드를 활용하면 숫자를 문자열로 변환할 수 있다

  • String String.valueOf(int value)
  • String String.valueOf(long value)
  • String String.valueOf(double value)

문자열을 숫자로, 숫자를 문자열로 변환하는 예시

 

 


 

오토박싱과 클래스 형변환이 활용

 

보통 정수 10을 저장할 때 아래와 같은 코드와 같이 한다

int x = 10;
Integer x = new Integer(10);

 

 

 

그러나 위에서 배운 오토박싱을 사용하면 아래와 같이 오브젝트에도 정수인 10을 저장할 수 있다

Object x = 10;

 

 

 

오브젝트가 10을 저장할 수 있는 이유는 이러하다.

 

 Object x = 10;

x가 Object 타입의 참조변수기 때문에 Integer 객체가 생성 - 오토박싱
		= new Integer(10);

x가 Object 타입이기 때문에 Integer객체의 주소값이 아니라
Integer객체의 Object 객체 주소값이 x에 대입된다. - 클래스 형변환

Object x = new Integer(10);

 

'Java' 카테고리의 다른 글

Java_제네릭(Generic)  (0) 2023.11.17
Java_StringBuilder/Buffer, Date 클래스, Math 클래스  (0) 2023.11.16
Java_String 클래스  (0) 2023.11.14
Java_Object 클래스, Java API  (0) 2023.11.14
Java_접근제어자, 내부클래스(oop)  (0) 2023.11.13