모든 클래스 상속계층도의 제일 위에 위치하는 조상클래스
class Tv { ... }
class CaptionTv extends Tv { ... }
protected Object clone()
public boolean equals(Object obj)
protected void finalize()
public Class getClass()
public int hashCode()
public String toString()
public void wait()
/ public void wait(long timeout)
/ public void wait(long timeout, int nanos)
public void notify()
public void notifyAll()
이름이 의미하듯이 ‘감싸는 클래스’로, 래퍼 클래스가 감싸는 대상은 실수, 문자와 같은 기본 자료형의 값들이다
기본형(primitive type) 변수도 때로는 객체로 다루어져야 하는 경우가 있는데(ex, 매개변수로 객체를 요구할 때, 기본형 값이 아닌 객체로 저장해야 할 때, 객체 간에 비교가 필요할 때 등), 이때 래퍼 클래스가 필요함
public static void showData(Object obj) {
System.out.println(obj);
}
// 위 메소드의 인자로 정수 3과 실수 7.15를 전달해야 하는 상황에서,
// 기본 자료형의 값을 인스턴스로 만들어 전달해야 함 -> 래퍼 클래스 필요
public static void main(String[] args) {
Integer iInst = new Integer(3);
showData(iInst);
showData(new Double(7.15));
}
래퍼 클래스는 참조 타입의 종류이다!
아래와 같이 모든 기본 자료형을 대상으로 래퍼 클래스가 정의되어 있음
public Boolean(boolean value)
(생성자)public Character(char value)
public Byte(byte value)
public Short(short value)
public Integer(int value)
public Long(long value)
public Float(float value)
, public Float(double value)
public Double(double value)
iObj = new Integer(iObj.intValue() + 10);
각 래퍼 클래스별 언박싱 메소드의 이름은 아래와 같음
public boolean booleanValue()
public char charValue()
public byte byteValue()
public short shortValue()
public int intValue()
public long longValue()
public float floatValue()
public double doubleValue()
자바 5부터 박싱과 언박싱이 필요한 상황에 자바 컴파일러가 이를 자동으로 처리하기 시작함
Integer iObj = 10; -> Integer iObj = new Integer(10);
Double dObj = 3.14; -> Double dObj = new Double(3.14);
int num1 = iObj; -> int num1 = iObj.intValue();
double num2 = dObj; -> double num2 = dObj.doubleValue();
Integer형 참조변수 num을 int형 변수 num처럼 사용할 수 있게 됨
num++; -> new Integer(num.intValue() + 1);
num += 3; ->. new Integer(num.intValue() + 3);
Number 클래스는 추상클래스로 내부적으로 숫자를 멤버변수로 갖는 클래스들의 조상임
도서 ‘Java의 정석’
도서 ‘윤성우의 열혈 Java 프로그래밍’
http://happinessoncode.com/2017/10/05/java-object-wait-and-notify/
https://inpa.tistory.com/entry/JAVA-☕-wrapper-class-Boxing-UnBoxing