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 클래스의 정적 메소드를 활용하면 문자열을 숫자로 변환할 수 있다
- 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 |