박싱 과 언박싱이란?
- 자바에는 기본 타입과 Wrapper 클래스가 존재한다.
/**
기본 타입 : int, long, float, double, boolean 등
Wrapper 클래스 : Integer, Long, Float, Double, Boolean 등
*/
// 박싱
int i = 10;
Integer num = new Integer(i);
// 언박싱
Integer num = new Integer(10);
int i = num.intValue();
오토 박싱 & 오토 언박싱
- JDK 1.5부터는 자바 컴파일러가 박싱과 언박싱이 필요한 상황에 자동으로 처리를 해준다.
// 오토 박싱
int i = 10;
Integer num = i;
// 오토 언박싱
Integer num = new Integer(10);
int i = num;
성능
- 100만건 기준으로 약 5배의 성능 차이가 난다. 따라서 서비스를 개발하면서 불필요한 오토 캐스팅이 일어나는 지 확인하는 습관을 가지자.
오토 박싱 연산
public static void main(String[] args) {
long t = System.currentTimeMillis();
Long sum = 0L;
for (long i = 0; i < 1000000; i++) {
sum += i;
}
System.out.println("실행 시간: " + (System.currentTimeMillis() - t) + " ms");
}
// 실행 시간 : 19 ms
동일 타입 연산
public static void main(String[] args) {
long t = System.currentTimeMillis();
long sum = 0L;
for (long i = 0; i < 1000000; i++) {
sum += i;
}
System.out.println("실행 시간: " + (System.currentTimeMillis() - t) + " ms") ;
}
// 실행 시간 : 4 ms
'몰아 넣기' 카테고리의 다른 글
[자료구조] 우선순위 큐(priorityQueue) 알아보기 (with 자바) (0) | 2023.02.11 |
---|---|
[Spring] Swagger3 사용해보기 (0) | 2023.02.05 |
[Spring] @Async를 사용해 비동기 메소드 만들어보기 (0) | 2023.01.08 |
[java/spring] Stream의 안좋은 예시 :1 (0) | 2022.12.24 |
[Spring]@Valid, @Validated 에 대해서 정리[3] - DTO구조를 이용한 @Valid (0) | 2022.11.27 |