Autoboxing zamienia prymitywy na wrappery (np. `int`→`Integer`), a unboxing odwrotnie. Pułapki: unboxing `null` daje NPE, cache’owanie `Integer` może mylić przy `==`, a dodatkowe alokacje potrafią zaboleć wydajnościowo.
Integer x = null;
// int y = x; // NullPointerException due to unboxing
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true (Integer cache)
Integer c = 1000;
Integer d = 1000;
System.out.println(c == d); // false