데이터 타입 분류 - JAVA

 

데이터 타입

  • 변수, 상수, 매개변수 등의 타입과 값 범위 정의
  • 컴파일러에게 데이터 타입과 필요한 메모리 크기 알림
  • 운영체제의 메모리 할당 및 저장 가능한 데이터 결정
  • 정수, 소수, 문자 등 다양한 형태의 데이터 저장 가능

 

기본 타입과 참조 타입

  • 기본형 데이터 타입 (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