boxing
은 int 같은 값을 Integer 같은 유사한 객체에 넣는 과정입니다.
unboxing
은 Integer 같은 객체에서 기본 자료형 값을 찾아오는 과정입니다.
boxing
과 unboxing
을 하는 동안 원본 값은 변하지 않습니다.
때문에 필요하지도 않는 데 이 둘을 반복하는 것은 의미 없습니다.
이는 자동으로 boxing
되거나 자동으로 unboxing
되는 경우에도 적용됩니다.
(e.g Java에서 기본 자료형/래퍼 클래스 전환을 암묵적으로 처리하는 경우)
규칙을 어긴 코드
public void examineInt(int a) {
//...
}
public void examineInteger(Integer a) {
// ...
}
public void func() {
int i = 0;
Integer iger1 = Integer.valueOf(0);
double d = 1.0;
int dIntValue = new Double(d).intValue(); // 규칙을 어긴 코드
examineInt(new Integer(i).intValue()); // 규칙을 어긴 코드; 명백하게 boxing / unboxing하고 있습니다.
examineInt(Integer.valueOf(i)); // 규칙을 어긴 코드; boxing된 int가 즉시 unboxing됩니다.
examineInteger(i); // 규칙을 준수한 코드; boxing 되지만 unboxing 하지는 않습니다.
examineInteger(iger1.intValue()); // 규칙을 어긴 코드; unboxing 된 int가 곧장 박싱됩니다.
Integer iger2 = new Integer(iger1); // 규칙을 어긴 코드; unboxing이 필요 없습니다. 값을 재사용하면 됩니다
}
규칙을 준수한 해결책
public void examineInt(int a) {
//...
}
public void examineInteger(Integer a) {
// ...
}
public void func() {
int i = 0;
Integer iger1 = Integer.valueOf(0);
double d = 1.0;
int dIntValue = (int) d;
examineInt(i);
examineInteger(i);
examineInteger(iger1);
}
If you like SONARKUBE, don’t forget to give me a star.