데이터가 갖는 형으로 데이터의 실질적인 구조, 개념
크게 기본 자료형, 참조 자료형으로 나뉩니다.
기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)
박싱: 기본 타입의 값을 객체로 만드는 과정
언박싱: 객체에서 기본 타입의 값을 얻는 과정
public class WrapperEx {
public static void main(String args[]) {
Integer number = new Integer(17); // 박싱
int n = number.intValue(); // 언박싱
System.out.println(n);
}
}
// 자동 박싱과 자동 언박싱
public class WrapperEx {
public static void main(String args[]) {
Integer number = 17; // 자동 박싱
int n = number; // 자동 언박싱
System.out.println(n);
}
}
public class WrapperEx {
public static void main(String[] args) {
String str = "10";
String str2 = "10.5";
String str3 = "true";
byte b = Byte.parseByte(str);
int i = Integer.parseInt(str);
short s = Short.parseShort(str);
long l = Long.parseLong(str);
float f = Float.parseFloat(str2);
double d = Double.parseDouble(str2);
boolean bool = Boolean.parseBoolean(str3);
System.out.println("문자열 byte값 변환 : "+b);
System.out.println("문자열 int값 변환 : "+i);
System.out.println("문자열 short값 변환 : "+s);
System.out.println("문자열 long값 변환 : "+l);
System.out.println("문자열 float값 변환 : "+f);
System.out.println("문자열 double값 변환 : "+d);
System.out.println("문자열 boolean값 변환 : "+bool);
}
}
wrapper 객체는 내부의 값을 비교할 수 없습니다.
public class WrapperEx {
public static void main(String[] args){
Integer number1 = 17;
Integer number2 = 17;
num1 = number1;
num2 = number2;
System.out.println(number1 == number2) // false
System.out.println(num1 == num2) // True
System.out.println(number1.equals(number2)) // True
System.out.println(num1 == number2) // True
}
}
이유는 wrapper의 객체를 비교할 때 내부의 값을 비교하는 것이 아니라 객체의 참조 주소를 비교하게 됩니다.
참고 자료
코딩 팩토리