래퍼 클래스
- 기본 자료형 값을 래퍼 클래스(인스턴스)로 감싸는 것.
- 즉, 기본 자료형 값을 가진 인스턴스를 생성한다.
기본 자료형의 값을 감싸는 래퍼 클래스
class UseWrapperClass {
public static void showData(Object obj) {
System.out.println(obj);
}
기본 자료형은 class가 아니기 때문에 Object를 상속하지 않는다.
인스턴스를 요구하는 메소드
이 메소드를 통해서 정수나 실수를 출력하려면 해당 값을 인스턴스화 해야 한다.
public static void main(String[] args) {
Integer iInst = new Integer(3);
showData(iInst);
showData(new Double(7.15));
}
}
이렇듯 기본 자료형의 값을 인스턴스로 감싸는 목적의 클래스를 가리켜 래퍼 클래스라 한다.
래퍼 클래스의 종류와 생성자
- Boolean public Boolean (boolean value)
- Character public Character (char value)
- Byte public Byte (byte value)
- Short public Short (short value)
- Integer public Integer (int value)
- Long public Long (long value)
- Float public Float (float value), public Float (double value)
- Double public Double (double value) // 자동 형변환이 가능하기 때문에 float 는 따로 정의 안해줌.
- Boolean public boolean booleanValue()
- Character public char charValue()
- Integer public int intValue()
- Long public long longValue()
- Double public double doubleValue()
오토 박싱과 오토 언박싱
class AutoBoxingUnboxing {
public static void main (String[] args) {
Integer iObj = 10; // 오토 박싱 진행
Double dObj = 3.14; // 오토 박싱 진행
. . . .
인스턴스가 와야 할 위치에 기본 자료형 값이 오면 오토 박싱 진행
int num1 = iObj; // 오토 언박싱 진행
double num2 = dObj; // 오토 언박싱 진행
. . . .
기본 자료형 값이 와야 할 위치에 인스턴스가 오면 오토 언박싱 진행
}
}
오토 박싱, 오토 언박싱의 또 다른 예
public static void main(String[] args) {
Integer num = 10;
num ++; // new Integer(num.intValue() +1); - 명확하게 쓰기위해 이렇게 굳이 쓰는 개발자도 있음!!
. . . . 오토 박싱과 오토 언박싱 동시에 진행!
num += 3; // new Integer(num.intValue() +3);
. . . . 오토 박싱과 오토 언박싱 동시에 진행!
int r = num + 5; // 오토 언박싱 진행
Integer rObj = num - 5; // 오토 언박싱 진행
. . . .
}
Number 클래스
java.lang.Number
모든 래퍼 클래스가 상속하는 클래스
java.lang.Number에 정의된 추상 메소드들
public abstract int intValue()
public abstract long longValue()
public abstract double doubleValue()
-> 즉 래퍼 인스턴스에 저장된 값을 원하는 형의 기본 자료형 값으로 반환할 수 있다.
Number 클래스의 추상 메소드 호출의 예
public static void main(String[] args) {
Integer num1 = new Integer(29);
System.out.println(num1.intValue()); // int형 값으로 반환
System.out.println(num1.doubleValue()); // double형 값으로 반환
Doubl num2 = new Double(3.14);
System.out.println(num2.intValue()); // int형 값으로 반환
System.out.println(num2.doubleValue()); // double형 값으로 반환
}
래퍼 클래스의 다양한 static 메소드들
public static void main(String[] args) {
// 클래스 메소드를 통한 인스턴스 생성 방법 두 가지
Integer n1 = Integer.valueOf(5); // 숫자 기반 Integer 인스턴스 생성 - new Integer(5); 랑 같음!!
Integer n2 = Integer.valueOf("1024"); // 문자열 기반 Integer 인스턴스 생성
// 대소 비교와 합을 계산하는 클래스 메소드
System.out.println( "큰 수 : " + Integer.max(n1, n2) );
System.out.println( "작은 수 : " + Integer.min(n1, n2) );
System.out.println( "합 : " + Integer.sum(n1, n2) );
System.out.println();
// 정수에 대한 2진, 8진, 16진수 표현 결과를 반환하는 클래스 메소드
System.out.println( "12의 2진 표현 : " + Integer.toBinaryString(12) );
System.out.println( "12의 8진 표현 : " + Integer.toOctalString(12) );
System.out.println( "12의 16진 표현 : " + Integer.toHexString(12) );
}
'# 02 > Java' 카테고리의 다른 글
[윤성우 열혈자바] 20-3. Math 클래스와 난수의 생성, 그리고 문자열 토큰의 구분 (0) | 2019.10.23 |
---|---|
[윤성우 열혈자바] 20-2. BigInteger 클래스와 BigDecimal 클래스 (0) | 2019.10.23 |
[윤성우 열혈자바] 19-2. Object 클래스 (0) | 2019.10.23 |
[윤성우 열혈자바] 19-1. 자바 가상머신의 메모리 모델 (0) | 2019.10.23 |
[윤성우 열혈자바] 18-2. 예외처리에 대한 나머지 설명들 (0) | 2019.10.22 |