9장 래퍼(wrapper)클래스와 Number 클래스와 오토박싱 & 언박싱

slee2·2021년 9월 12일
0

Java의 정석

목록 보기
18/28
post-thumbnail

래퍼 클래스

  • 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스.
public final class Integer extends Number implements Comparable {
	...
   	private int value;
   	...
}
기본형래퍼블래스활용예
booleanBooleanBoolean b = new Boolean(true);
Boolean b2 = new Boolean("true");
charCharacterCharacter c = new Character('a');
byteByteByte b = new Byte(10);
Byte b2 = new Byte("10");
shortShortShort s = new Short(10);
Short s2 = new Short("10");
intIntegerInteger i = new Integer(100);
Integer i2 = new Integer("100");
floatFloatFloat f = new Float(1.0);
Float f2 = new Float(1.0f);
Float f3 = new Float("1.0f");
doubleDoubleDouble d = new Double(1.0);
Double d2 = new Double("1.0");
class Ex {
	public static void main(String[] args) {
   		Integer i = new Integer(100);
  		Integer i2 = new Integer(100);
        
 		System.out.println(i==i2);		// 주소를 비교해서 실패
 		System.out.println(i.equals(i2));	// 이건 성공
   	}
}
result
false
true

Number 클래스

  • 모든 숫자 래퍼 클래스의 조상.(byte, short, integer, long, 등등...)
public abstract class Number implements java.io.Serializable {
	public abstract int inValue();	// new Integer(100)을 int형으로 바꿔주는 메서드
  	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	i2 = Integer.parseInt("100");
Integer	i3 = Integer.valueOf("100");
문자열->기본형문자열->래퍼 클래스
byte b = Byte.parseByte("100");
short s = Short.parseShort("100");
int i = Integer.parseInt("100");
long l = Long.parseLong("100");
float f = Float.parseFloat("3.14");
double d = Double.parseDouble("3.14");
Byte b = Byte.valueOf("100");
Short s Short.valueOf("100");
Integer i = Integer.valueOf("100");
Long l = Long.valueOf("100");
Float f = Float.valueOf("3.14");
Double d = Double.valueOf("3.14");
  • n진법의 문자열을 숫자로 변환하는 방법
int	i4 = Integer.parseInt("100", 2)	// 100(2) -> 4
int	i5 = Integer.parseInt("100", 8)	// 100(8) -> 64
int	i6 = Integer.parseInt("100", 16)	// 100(16) -> 256
int	i7 = Integer.parseInt("FF", 16)	// FF(16) -> 255
//int	i8 = Integer.parseInt("FF")	// NumberFormatException발생

오토박싱 & 언박싱

  • JDK1.5이전에는 기본형과 참조형간의 연산이 불가능
int	i = 5;
Integer	iObj = new Integer(7);

int	sum = i + iObj;	// 에러. 기본형과 참조형 간의 덧셈불가(JDK1.5 이전)
-------- 1.5 이후 --------
int sum = i + iObj.intValue():	// 컴파일러가 자동으로 바꿈
  • 기본형의 값을 객체로 자동변환하는 것을 오토박싱 반대는 언박싱
ArrayList<Integer>	list = new ArrayList<Integer>();
list.add(10);	// 오토박싱. 10 -> new Integer(10)

int	value = list.get(0);	// 언박싱. new Integer(10) -> 10

0개의 댓글