값을 직접 다루는 기본형과 객체 참조를 구분합니다.
byte, short, int, long, float, double, char, boolean은 기본형입니다. String, 배열, 클래스 인스턴스는 객체를 가리키는 참조값을 저장하며 null일 수 있습니다.
Integer boxed = primitive 줄에서 int 42가 Integer 객체로 바뀌고, 출력할 때는 그 객체의 문자열 표현인 42가 됩니다. initial은 작은따옴표로 쓴 char 하나, text는 큰따옴표로 쓴 String이라 화면에는 둘 다 J로 보여도 타입이 다릅니다. 그래서 initial + 1처럼 char에 숫자를 더하면 문자 코드 74에 1을 더한 정수 75가 나옵니다.
래퍼 타입 Integer, Double 등은 컬렉션과 제네릭에서 기본형을 객체로 다루게 하며 autoboxing이 자동 변환을 제공합니다.
불필요한 boxing은 메모리와 null 위험을 늘릴 수 있으므로 대량 계산은 기본형 특화 API도 고려합니다.
Integer는 null일 수 있어 int로 자동 언박싱할 때 NullPointerException이 발생할 수 있습니다.
직접 바꿔보세요char와 문자열 한 글자의 차이를 출력하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.