Wrapper Classes
1. Why Wrappers? (beginner)
Primitives (int) are fast but not objects — can't go in ArrayList, can't have methods/null. Wrappers wrap each primitive as object: int→Integer, double→Double, etc. Bridge for collections + parsing!
2. Eight Pairs (exam table!)
| Primitive | Wrapper | Parse String→value |
|---|---|---|
| int | Integer |
Integer.parseInt("42") → 42 |
| double | Double |
Double.parseDouble("3.14") → 3.14 |
| char | Character |
Character.isDigit('5') → true |
| boolean | Boolean |
Boolean.parseBoolean("true") → true |
| byte/short/long/float | Byte/Short/Long/Float |
same parseXxx pattern |
3. Autoboxing Magic (Java 5+ — beginners love!)
Integer obj = 42; // autoboxing: int → Integer (auto!)
int x = obj; // unboxing: Integer → int (auto!)
ArrayList<Integer> list = new ArrayList<>(); // primitives FORBIDDEN here!
list.add(10); // autoboxed to Integer (no new needed!)
list.add(Integer.valueOf(20)); // explicit (same!)
int sum = list.get(0) + list.get(1); // unboxed back!
String s = "123";
int n = Integer.parseInt(s); // THE args-parsing trick (see CLI topic!)
4. Traps (exam favourites!)
Integer a=127, b=127 → a==btrue (cached!), but128==128wrappers → false (different objects!). Always.equals()/intValue()for values!nullInteger + unbox →NullPointerException:Integer o=null; int x=o;CRASH!- Parse garbage →
NumberFormatException:Integer.parseInt("abc")crashes!
5. Exam Points
- Table + autoboxing + parse program — 7 marks, very frequent.
==cache trap (127 vs 128) + NPE — 5 marks, favourite traps.