Tipi primitivi e wrapper
Integer, Double, Boolean e simili
Tipi primitivi e wrapper è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Due mondi di valori
Java dispone di tipi primitivi come int, double e boolean, che contengono direttamente i valori grezzi. Dispone anche di classi wrapper come Integer, Double e Boolean, che racchiudono questi valori all'interno di oggetti.
I primitivi sono veloci e leggeri. I wrapper sono oggetti completi, che possono essere contenuti nelle collezioni e possono valere null.
Gli otto primitivi
Java definisce esattamente otto tipi primitivi:
byte,short,int,longper i numeri interifloat,doubleper i numeri decimalicharper un singolo caratterebooleanper vero/falso
Ognuno ha una classe wrapper corrispondente nel package java.lang.
Nomi dei wrapper corrispondenti
Nella maggior parte dei casi, il nome del wrapper si ottiene scrivendo con l'iniziale maiuscola il nome del primitivo, ma ci sono due eccezioni:
intdiventa Integerchardiventa Characterbooleandiventa Boolean,doublediventa Double e così via
Stampiamo alcuni wrapper.
public class Main {
public static void main(String[] args) {
Integer count = 42;
Double price = 9.99;
Boolean active = true;
Character grade = 'A';
System.out.println(count);
System.out.println(price);
System.out.println(active);
System.out.println(grade);
}
}I wrapper sono oggetti
Un primitivo contiene un valore. Un wrapper è un riferimento a un oggetto, quindi può non puntare a nulla, tramite null.
Questo rende i wrapper utili quando un valore potrebbe mancare, ad esempio per una colonna di database che consente NULL.
public class Main {
public static void main(String[] args) {
Integer missing = null;
int present = 5;
System.out.println(missing);
System.out.println(present);
}
}Costanti utili
Le classi wrapper espongono comode costanti. Integer.MAX_VALUE e Integer.MIN_VALUE forniscono i valori int massimo e minimo.
È molto più semplice che memorizzare personalmente questi numeri.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
}Metodi di supporto
Le classi wrapper sono anche raccolte di utili metodi statici. Ad esempio, Integer.toBinaryString mostra un numero in base 2, mentre Integer.max restituisce il maggiore tra due valori.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(10));
System.out.println(Integer.max(7, 3));
System.out.println(Integer.toHexString(255));
}
}Perché le collezioni richiedono i wrapper
I generics di Java funzionano solo con gli oggetti, non con i primitivi. Non può scrivere List<int>.
Deve invece usare List<Integer>. Il wrapper permette al valore primitivo di entrare nel mondo degli oggetti richiesto dalle collezioni.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
System.out.println(numbers);
}
}Confrontare i valori dei wrapper
Per confrontare il valore numerico contenuto in due wrapper, usi .equals() o .compareTo(), non gli operatori matematici direttamente sugli oggetti.
compareTo restituisce un numero negativo, zero oppure un numero positivo.
public class Main {
public static void main(String[] args) {
Integer a = 100;
Integer b = 200;
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));
}
}Memoria e prestazioni
I primitivi usano meno memoria e vengono elaborati più velocemente perché non comportano il sovraccarico degli oggetti. Un singolo int occupa appena 4 byte di dati grezzi.
Un oggetto wrapper contiene informazioni aggiuntive nell'header. Per cicli stretti su milioni di valori, preferisca i primitivi.
I valori predefiniti sono diversi
Un campo primitivo non inizializzato assume come valore predefinito un valore simile a zero: int vale 0, boolean vale false.
Un campo wrapper non inizializzato assume invece null. Questa differenza è importante quando in seguito si prova a usare il valore.
public class Main {
static int primitiveField;
static Integer wrapperField;
public static void main(String[] args) {
System.out.println(primitiveField);
System.out.println(wrapperField);
}
}Scegliere tra i due
Una regola semplice: usi i primitivi come impostazione predefinita per ottenere prestazioni e chiarezza. Passi a un wrapper quando ha bisogno di un elemento di una collezione, di un tipo generico o della possibilità di rappresentare un valore mancante con null.
Verifica rapida
Verifichi la sua comprensione dei primitivi e dei wrapper.
Riepilogo
Ha imparato la differenza tra primitivi e wrapper:
- Gli otto primitivi corrispondono a otto classi wrapper, come
IntegereDouble - I wrapper sono oggetti, possono valere
nulle possono essere usati nelle collezioni - I primitivi sono più veloci e leggeri, quindi li usi come impostazione predefinita
- Le classi wrapper forniscono anche costanti e metodi di supporto utili
Domande Frequenti
La lezione «Tipi primitivi e wrapper» è gratuita?
Sì — il testo completo di «Tipi primitivi e wrapper» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «Tipi primitivi e wrapper»?
Integer, Double, Boolean e simili Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Tipi primitivi e wrapper»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Tipi primitivi e wrapper
- Autoboxing e unboxing
- Parsing e valueOf
- Insidie dell'autoboxing