Intern
Qual è la differenza tra tipi di dati primitivi e di riferimento?
sobes.tech AI
Risposta dell'AI
I tipi primitivi memorizzano direttamente il valore, mentre i tipi di riferimento memorizzano un riferimento (indirizzo in memoria) all'oggetto che contiene il valore.
Tipi primitivi:
- Occupano una dimensione fissa e piccola in memoria.
- Vengono trasmessi per valore (il valore stesso viene copiato).
- Iniziano con una lettera minuscola.
- Includono:
byte,short,int,long,float,double,boolean,char.
// Esempio di tipo primitivo
int a = 10;
int b = a; // Copia il valore 10
b = 20; // Solo b cambia, a rimane 10
Tipi di riferimento:
- Occupano quantità di memoria diverse, a seconda del contenuto dell'oggetto.
- Vengono trasmessi per riferimento (l'indirizzo dell'oggetto viene copiato). La modifica dell'oggetto tramite il riferimento influisce su tutte le variabili che lo riferiscono.
- Iniziano generalmente con una lettera maiuscola (classi).
- Includono: classi (
String,Object, classi personalizzate), interfacce, array.
// Esempio di tipo di riferimento
String str1 = new String("Hello");
String str2 = str1; // Copia il riferimento all'oggetto "Hello"
str2 = "World"; // str2 ora punta a un nuovo oggetto "World". str1 punta ancora a "Hello".
// Altro esempio con oggetto mutabile
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Copia il riferimento allo stesso oggetto ArrayList
list2.add(2); // Aggiunge un elemento all'oggetto accessibile tramite entrambe le referenze
// Ora list1 contiene [1, 2] e list2 contiene [1, 2]
Tabella comparativa rapida:
| Proprietà | Tipi primitivi | Tipi di riferimento |
|---|---|---|
| Memorizzazione | Valore | Riferimento all'oggetto |
| Trasmissione | Per valore | Per riferimento |
| Dimensione memoria | Fisso e piccolo | Variabile |
| Inizia con | Minuscola | Generalmente con maiuscola |
| Nullabilità | Non possono essere null |
Possono essere null |
I tipi primitivi vengono avvolti in classi wrapper (come Integer per int) per poterli trattare come oggetti.