java api reference에서 찾아본다면 java.lang 패키지의 클래스들 중 기본형(primitive type)변수를 감싸는 클래스들이다.
Description는 다음과 같다.
The [래퍼클래스명] class wraps a value of the primitive type [기본형] in an object.
자바는 객체지향 언어이지만 기본형이라는 예외를 둔 이유는 성능때문이다.
상속계층도에서 볼 수 있듯이 모든 숫자 래퍼 클래스들의 조상이다.
Number클래스의 메서드들public abstract class Number implements java.io.Serializable {
public Number() {super();}
public abstract int intValue();
public abstract long longValue();
public abstract float floatValue();
public abstract double doubleValue();
public byte byteValue() { return (byte)intValue(); }
public short shortValue() { return (short)intValue(); }
}
int i = new Integer("100").intValue();
int i = Integer.parseInt("100"); //주로 이 방법을 많이 사용
Integer i = Integer.valueOf("100")
래퍼 클래스(Wrapper class)는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없다.
단지, 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있다.
1. 박싱: 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정
2. 언박싱: 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정
Integer 객체 오토박싱의 예시(intValue() 호출)
Integer x = 400, y = 400;
if (x == y)
System.out.println("Same");
else
System.out.println("Not Same");
// 출력 결과: Not Same
x와 y가 서로 다른 객체를 참조하므로 결과가 Not Same이 나왔다. 하지만 다음 결과를 보자
Integer x = new Integer(40), y = new Integer(40);
if (x == y)
System.out.println("Same");
else
System.out.println("Not Same");
// 출력 결과: Same
valueOf()는 -128에서 127 사이의 값에 대하여 캐시된 객체를 사용하여 Same 이 출력된다.
new 연산자를 통하여 명시적으로 객체를 생성하면 첫번째 경우와 같이 Not Same이 출력된다.
다음 내용은 First Class Collection(일급 컬렉션)!
언제든 내용이 추가될 수 있음!
https://www.geeksforgeeks.org/wrapper-classes-java/
http://www.tcpschool.com/java/java_api_wrapper