shine java ta atomatikta canja tsakanin (, ) da kuma (, ). Yana da sauki kuma lƙowa ke da abubuwan da ba a gane sai dai — ƙara aiki, hankali mahaɗa, da haɗari .
intdoubleIntegerDouble==NullPointerExceptionInteger boxed = 42; // autoboxing: int → Integer (Integer.valueOf(42))
int unboxed = boxed; // auto-unboxing: Integer → int (boxed.intValue())
List<Integer> nums = new ArrayList<>();
nums.add(5); // autoboxes int 5 → Integer (collections need objects)
int x = nums.get(0); // auto-unboxes Integer → int
Yana faruwa ta atomatikta domin Collections da generics nasu bukatar objects (ba za ka sami List<int> ba), saboda haka Java ke damje primitives cikin sauki.
Integer a = 1000;
Integer b = 1000;
a == b; // ❌ FALSE — different Integer OBJECTS (reference comparison)
a.equals(b); // ✅ true — value comparison
// the WORSE trap — the Integer cache makes small values seem to work:
Integer c = 100, d = 100;
c == d; // TRUE — Java CACHES Integers from -128 to 127 (same object)
Integer e = 200, f = 200;
e == f; // FALSE — outside the cache range → different objects
Wancan ba a gane shi ba: == akan Integer yana aiki don ƙarami (cached) kuma ya kasa don masu girma — lambar da ta yi daidai a magudantar ta ƙasua a aiki. Koyaushe yi amfani da .equals() don kwatantawa wrapper value, ko unbox zuwa primitives na jiya.
Integer value = null; // a wrapper can be null
int x = value; // 💥 NullPointerException — unboxing null calls null.intValue()
Map<String, Integer> map = new HashMap<>();
int count = map.get("missing"); // 💥 NPE — get() returns null, then unboxing fails
Unboxing null wrapper yana jefa NPE — tsohon, abubuwan da ba a gane sai dai crash, musamman tare da map lookups da ke dawo null.
// ❌ autoboxing in a hot loop — creates millions of Integer objects (GC pressure, slow)
Long sum = 0L; // WRONG type — wrapper
for (long i = 0; i < 1_000_000; i++) {
sum += i; // unbox, add, re-box → new Long each iteration!
}
// ✅ use primitives in hot paths
long sum = 0L; // primitive — no boxing
Boxing/unboxing na jɗa-jɗa yana ƙirƙirar abubuwan da yawa, yana lalata aiki a cikin loops masu ƙaɓewa.
Autoboxing yana da sauki kuma yana faduwa a ko'ina (Collections, generics duka suna dogara da shi), kuma abubuwan da ke ciki suna yi tunkarar daidai, da kuma dillai.
== trap ke da hadari musamman: kwatantawa Integers da == yana aiki don cached ƙarami (-128 zuwa 127) kuma a hankali ya kasa don masu girma — dilli wanda ya wuce magudantar kuma ya ƙasua a aiki — yana sa .equals() (ko unboxing) zaman buƙatacce don kwatantawa wrapper. NullPointerExceptions daga unboxing null wrappers (gida tare da map lookups) su ne wani wadataccen crash.
Kuma boxing a cikin hot loops yana ƙirƙirar bakin haushi abubuwan, yana lalata aiki.
Jawaharin lokacin da boxing yana faruwa, batun daidai da references, haɗarin null-unboxing, da kuma yin amfani da primitives a cikin lambar aiki ke da muhimmanchi ne don rubuta daidai, efficient Java — kuma Integer-cache == hali shi ne gida interview tambaya wanda ta bayyana tunkarar zurfin fahimta.