Boxing
은 int 값을 소유하는 유사 객체에 넣는 과정을 의미합니다.
반대로 Unboxing
은 이러한 객체에서 값을 갖고오는 과정입니다.
Boxing
과 Unboxing
을 수행하는 동안 값 자체에는 아무런 변화가 없습니다.
그러므로 아무 의미없는 행동입니다.
이는 Java에서 암묵적으로 처리하는 autoboxing
과 auto-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 = new Double(d).intValue(); // 규칙을 어긴 코드
examineInt(new Integer(i).intValue()); // 규칙을 어긴 코드; 명백한 box/unbox
examineInt(Integer.valueOf(i)); // 규칙을 어긴 코드; box된 int가 암묵적으로 auto-unbox가 이루어집니다
examineInteger(i); // 규칙을 준수한 해결책; 값이 box된 이후 unbox되지 않습니다
examineInteger(iger1.intValue()); // 규칙을 어긴 코드; unbox된 int가 autobox됩니다
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.