728x90
자바에는 크게 2가지 데이터 타입 존재
primitive Data
- boolean, char, byte, short, int, long, float, double
- 가벼운 데이터
- 스택 메모리에 위치
Object Date
- 무거운 데이터
- 실제 데이터는 힙메모리에 공유하고 래퍼런스만 스택메모리에 위치
Wrapper Class
- primitive Data를 객체로 다루기 위해서 사용하는 Class
- primitive Data를 ObjectDate화 시킨 Class
- 모든 기본형 타입(primitvie type)은 값을 갖는 객체 생성 가능. 이런 객체를 포장객체라고 부름. 이유는 기본타입의 값을 내부에 두고 포장하기 때문. 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경 불가능. 만약 값을 바꾸고 싶다면 새로운 포장 객체를 만들어야함
- 래퍼 클래스는 java.lang 패캐지에 포함되어 있음
래퍼 클래스 사용 이유
- 기본 자료형의 값을 굳이 래퍼 클래스로 포장하는 이유는 재네릭, 자료구조, 매개변수 등 기본 자료형이 아닌 래퍼런스 타입을 필요로 하는 경우가 많고 메서드를 갖고 있어 다양하게 활용 가능
- 인스턴스를 생성하여 상속 및 재사용 가능
- 문자열(String)을 기본 타입 값으로 변환할 때
- parse + 기본타입명 메서드
- ex) Integer.parseInteger(문자열) , Boolean.parseBoolean(문자열) , Float.parserFloat(문자열) , ...
래퍼 클래스 종류
래퍼 클래스 구조도
- 모든 래퍼 클래스의 부모는 Object
- 내부적으로 숫자를 다루는 래퍼 클래스의 부모 클래스는 Number 클래스
autoboxing
- primitive Date에서 Wrapper Class로 자동으로 변환되는 것
- 가벼운 데이터를 무거운 데이터에 넣기
- 컴파일러가 primitive Date 를 Object Date로 자동변환 하는 것
- 기본타입의 값을 포장객체로 만드는 과정
- 래퍼 클래스에 기본 자료형의 데이터 대입
auto unboxing
- Wrapper Class에서 primitive Date으로 자동으로 변환 되는 것
- 컴파일러가 Object Data를 primitive Date로 자동변환 하는 것
- 무거운 데이터를 가벼운 데이터에 넣기
- 포장객체에서 기본타입의 값을 얻어내는 과정
- 기본 자료형에 래퍼 객체 대입
public class prac{
public static void main(String[] args) {
Integer num = 17; // 자동 박싱
int n = num; //자동 언박싱
System.out.println(n);
}
}
public class prac {
public static void main(String[] args) {
int i1 = 10;
Integer wi = i1; // 오토 박싱
int i2 = wi; // 오토 언박싱
double d1 = 3.14;
Double wd = d1; // 오토 박싱
double d2 = wd; // 오토 언박싱
boolean b1 = true;
Boolean wb = b1; // 오토 박싱
boolean b2 = wb; // 오토 언박싱
}
}
728x90
'[자바] > 자바 문법' 카테고리의 다른 글
[Java] 배열 복사 Arrays.copyOf() vs System.arraycopy() (0) | 2021.10.31 |
---|---|
[Java] Vector 와 ArrayList 차이 (0) | 2021.10.24 |
[Java] return (0) | 2021.10.23 |
[Java] 메모리 구조 (static, stack, heap) (0) | 2021.10.22 |
[Java] Integer.parseInt, Integer.valoueOf 차이 (0) | 2021.10.22 |