데이터 타입
- 변수, 상수, 매개변수 등의 타입과 값 범위 정의
- 컴파일러에게 데이터 타입과 필요한 메모리 크기 알림
- 운영체제의 메모리 할당 및 저장 가능한 데이터 결정
- 정수, 소수, 문자 등 다양한 형태의 데이터 저장 가능
기본 타입과 참조 타입
- 기본형 데이터 타입 (primitive data types)
- 값 자체를 저장
- 언어에 의해 미리 정의됨
- 키워드로 이름이 지정됨
- 참조 타입 (reference/object data types)
- 객체가 생성된 메모리 주소를 저장
- 변수의 기본값은
null
- 객체의 주소를 참조하는 타입
- 배열, 열거, 클래스, 인터페이스 타입
박싱
박싱(boxing)
- 기초 타입을 클래스 타입으로 캡슐화하는 것
- 클래스의 기능을 사용하게 해줌
- Java는 기초타입에 대한 래퍼 클래스를 제공
- Double, Float, Long, Integer, Short, Byte, Character, Boolean, ...
오토박싱(autoboxing)
- 기초타입을 래퍼클래스로 자동 변환 해주는 것
- 생성자나 정적 메서드를 호출할 필요가 없음
- 반대의 경우도 가능 → 오토 언박싱(auto unboxing)
- Java컬렉션 프레임워크 등과 사용시 편리
Integer iob=100; // → 명시적 박싱 없이 Integer 오브젝트 자동 생성
int i=iob; // → Integer오브젝트를 자동으로 언박싱
static int m(Integer v) {
return v ;
}
//…
Integer iOb = m(100);// 인자로 들어올 시 오토 박싱, 리턴 시 오토 언박싱
Integer iOb, iOb2;
int i;
iOb = 100;
++iOb; //오토언박싱 후 ++ 연산 후 오토 박싱
iOb2 = iOb + (iOb / 3);//오토 언박싱 후 연산, 오토박싱 후 대입
Boolean b = true;
if(b){ // Boolean -> boolean 오토 언박싱
System.out.println("b is true");
}
Character ch = 'x';
char ch2 = ch; // Character -> char 오토 언박싱
Double a, b, c;
a = 10.0;
b = 4.0;
c = Math.sqrt(a*a + b*b);// Double -> double(연산 시) -> Double(변수 c에 저장 시)
⚠️ 주의
- 오토박싱 남용은 성능 저하의 원인이 됨
- 기초타입과 래퍼클래스 간 불필요한 변환 유발
'Java' 카테고리의 다른 글
Comparable (java.lang), Comparator (java.util) (1) | 2025.04.30 |
---|---|
Collection 프레임워크 (0) | 2025.04.29 |
JDK, JRE, JVM (0) | 2025.04.22 |
제어문 - JAVA (0) | 2025.04.15 |
[ Map ] key값을 기준으로 정렬 (0) | 2025.01.25 |