위에 제목을 이해하기 위해선 일단!
기본 자료형 Type, Wrapper클래스 에 대해서 알아야 합니다 😟
기본 자료형 Type :
int(정수), long(정수), float(실수), double(실수), boolean(논리식) ….etc
Wrapper Class :
Integer, Long, Float, Double, Boolean …etc
이렇게 보여주면 아!!! 이거!! 이러고 있을테니 지나갑니다 흠.
박싱과 언박싱에 대한 개념을 먼저 살펴보자 !
박싱 : 기본 타입 데이터에 대응하는 Wrapper 클래스로 만드는 동작
언박싱 : Wrapper 클래스에서 기본 타입으로 변환
// 박싱
int i = 10;
Integer num = new Integer(i);
// 언박싱
Integer num = new Integer(10);
int i = num.intValue();
이렇게 보니 생각보다 간단하죠???
어느새도 모르게 저희는 편하게 Integer 는 int 형으로 쓰고 있죠.
사실 이거는 JDK 1.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
동일 조건으로 100만건일때 약5배의 성능 차이가 납니다. 따라서 서비스를 개발하면서 불필요한 오토 캐스팅이 일어나는 지
확인하는 습관을 길르면 좀더 코드의 속도적인 면을 개선할 수 있을겁니다
라고 말하라고 구글이 그랬어요…. 전 아직 갈길이 멀었네요 ㅠ…
728x90
'Java' 카테고리의 다른 글
Static 이란? (0) | 2023.01.13 |
---|---|
2ndArray 2차원배열 (0) | 2023.01.13 |
JAVA 객체지향프로그래밍 ⇒ OOP? (0) | 2023.01.13 |
JAVA Generic (제너릭) 이란 (0) | 2023.01.13 |
JAVA의 컴파일러, JVM (Java Virtual Machine) (0) | 2023.01.13 |