● API(Application Programing Interface)
- 개발자들을 위해 기본적으로 제공하는 틀(클래스 틀)
- 외부 API
- 내부 API : 클래스들 String, ...
● Wrapper Class
- 기본 자료형을 감싸는 클래스

● 박싱 / 언박싱
1. 박싱(boxing)
- 기본 자료형을 자신을 감싸는 클래스 타입으로
2. 언박싱(unboxing)
- 클래스 타입을 기본 타입으로
실습(Wrapper 클래스)
1. int
public class WrapperTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 10;
Integer num3 = new Integer(10);
Integer num4 = new Integer(10);
System.out.println(num1 == num3); // num3가 auto unboxing 된 후 비교된다.
System.out.println(num3.equals(num1)); // num1이 auto boxing
System.out.println("num1 : " + num1);
System.out.println("num2 : " + num2);
System.out.println("num3 : " + num3);
System.out.println("num4 : " + num4);
System.out.println("num1 == num2 : " + (num1 == num2));
// num3 객체와 num4 객체가 같은지 비교
System.out.println("num3 == num4 : " + (num3 == num4));
// 내용을 비교하고 싶을 때는 .equals() 사용
System.out.println("num3.equals(num4) : " + num3.equals(num4));
}
}

2. String
public class WrapperTest {
public static void main(String[] args) {
String str1 = "안녕";
String str2 = "안녕";
String str3 = new String("안녕");
String str4 = new String("안녕");
String temp = str4;
System.out.println(temp == str4);
System.out.println(str1 == str2);
System.out.println(str3 == str4);
System.out.println(str3.equals(str4));
}
}

실습(boxing / unboxing)
1. boxing
public class BoxingUnboxing {
public static void main(String[] args) {
// boxing → 기본 → 클래스
int i1 = 10;
Integer wi1 = new Integer(i1); // boxing
// jdk 1.5 이후
// auto boxing
Integer wi2 = 10;
// auto boxing, up casting
Object[] ar = {10, 3.1, true, 'a'};
}
}
2. unboxing
public class BoxingUnboxing {
public static void main(String[] args) {
// boxing
int i1 = 10;
Integer wi1 = new Integer(i1);
// unboxing → 클래스 → 기본
wi1.intValue();
// auto unboxing
int i2 = wi2;
}
}