Per ogni tipo primitivo, in java, esiste una classe corrispondente (detta Wrapper), il cui nome può ottenere capitalizzando il nome, tranne nel caso di Integer e Character che oltre alla prima lettera cambiano anche il nome, come mostrato nella tabella seguente:
- byte —> Byte
- short —> Short
- int —> Integer
- long —> Long
- float —> Float
- double —> Double
- char —> Character
- boolean —> Boolean
Fondamentalmente, una classe wrapper è come un involucro (wrap) che ha lo scopo di contenere un valore primitivo, trasformandolo in un oggetto (quindi utilizzabile con le Java Collection, che vedremo più avanti, in quanto una collection può contenere solo oggetti e non tipi primitivi) e dotandolo di metodi di utilità.
Esempio:
Integer n = new Integer (2);
Esempio
int[] v = new int[5]; Integer[] v1 = new Integer[5]; Integer t = 34; Integer t1 = new Integer(23); if(v1[0] == null) v1[0] = t;
Notare che la riga 3 e 4 sono equivalenti: entrambi dichiarano un integer, uno che vale 23 e l’altro 34.
Inoltre, nell’esempio, si nota anche un’altra utilità dei wrapper: essendo v1 un array di oggetti, posso capire se la locazione zero è stata valorizzata o no, tramite l’uguaglianza con null; nell’array v, essendo di int, non riesco capirlo, perché un intero non valorizzato sarà sempre uguale a zero.
I wrapper possono essere convertiti nel corrisponde tipo primitivo e viceversa.
Esempio
int f = new Integer(2);// da integer a int Integer r = 45;// per creare un integer Integer h = new Integer(30);//si possono usare entrambi i modi int r1 = h;// da integer a int Long e = 23l; // da long a Long
Video Lezione Wrapper in Java