Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Trasferimento Dati in Java | Struttura Profonda di Java
Java Avanzato
course content

Contenuti del Corso

Java Avanzato

Java Avanzato

1. Struttura Profonda di Java
2. Metodi
3. String Avanzato
4. Classi
5. Classi Avanzate

book
Trasferimento Dati in Java

Come viene trasmessa l'informazione in Java?

Dal corso precedente sai che esistono due tipi di memoria: stack e heap. Vediamo come i dati vengono memorizzati in queste due aree di memoria:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }

Abbiamo creato 3 variabili diverse. Di seguito è riportato un diagramma che illustra come e dove verranno memorizzate in memoria:

Analizziamo ciò che hai osservato nel diagramma:

  • Vediamo campi String nella memoria stack che sono collegamenti ai valori nella memoria heap. In questo modo, non accediamo direttamente alla memoria heap ogni volta. Inizialmente, accediamo invece al collegamento nella memoria stack, che è più veloce rispetto all'accesso alla memoria heap. Hai già incontrato collegamenti ai valori quando hai studiato l'argomento String Pool;
  • Puoi vedere che int non viene memorizzato nella memoria heap; il suo valore è memorizzato direttamente nella memoria stack. Questo vale per tutti i tipi di dati primitivi (byte, short, int, long, float, double e boolean). Quindi, i tipi di dati primitivi in Java vengono passati per valore. Tuttavia, String non è un tipo di dato primitivo, quindi il suo valore viene memorizzato nella memoria heap;
  • Un nuovo oggetto viene creato nella memoria heap per ogni nuovo collegamento. Tuttavia, se due variabili dello stesso tipo hanno lo stesso valore, faranno riferimento allo stesso oggetto nella memoria heap;
  • L'Integer Pool è un'area nella memoria stack dove tutti i valori interi nell'intervallo da -128 a 127 sono collegati. Questa ottimizzazione viene effettuata per migliorare le prestazioni nella gestione dei numeri in Java, poiché i numeri in questo intervallo sono comunemente utilizzati. Ricorda che la memoria stack opera più velocemente della memoria heap, quindi otteniamo risposte più rapide grazie all'Integer Pool;
  • Lo String Pool è un'area nella memoria heap dove vengono memorizzati i valori stringa identici.

Conclusione

In Java, tutto viene passato per valore. Per gli oggetti, viene passata una copia del riferimento, ma l'oggetto effettivo nell'heap rimane invariato (se è immutabile, come String).

Le variabili nello stack memorizzano riferimenti a oggetti situati nell'heap. Questo vale per tutti i tipi di riferimento, incluso String.

1. Che cos'è un Integer Pool in Java?

2. Come vengono passati i dati in Java, per riferimento o per valore?

question mark

Che cos'è un Integer Pool in Java?

Select the correct answer

question mark

Come vengono passati i dati in Java, per riferimento o per valore?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

course content

Contenuti del Corso

Java Avanzato

Java Avanzato

1. Struttura Profonda di Java
2. Metodi
3. String Avanzato
4. Classi
5. Classi Avanzate

book
Trasferimento Dati in Java

Come viene trasmessa l'informazione in Java?

Dal corso precedente sai che esistono due tipi di memoria: stack e heap. Vediamo come i dati vengono memorizzati in queste due aree di memoria:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }

Abbiamo creato 3 variabili diverse. Di seguito è riportato un diagramma che illustra come e dove verranno memorizzate in memoria:

Analizziamo ciò che hai osservato nel diagramma:

  • Vediamo campi String nella memoria stack che sono collegamenti ai valori nella memoria heap. In questo modo, non accediamo direttamente alla memoria heap ogni volta. Inizialmente, accediamo invece al collegamento nella memoria stack, che è più veloce rispetto all'accesso alla memoria heap. Hai già incontrato collegamenti ai valori quando hai studiato l'argomento String Pool;
  • Puoi vedere che int non viene memorizzato nella memoria heap; il suo valore è memorizzato direttamente nella memoria stack. Questo vale per tutti i tipi di dati primitivi (byte, short, int, long, float, double e boolean). Quindi, i tipi di dati primitivi in Java vengono passati per valore. Tuttavia, String non è un tipo di dato primitivo, quindi il suo valore viene memorizzato nella memoria heap;
  • Un nuovo oggetto viene creato nella memoria heap per ogni nuovo collegamento. Tuttavia, se due variabili dello stesso tipo hanno lo stesso valore, faranno riferimento allo stesso oggetto nella memoria heap;
  • L'Integer Pool è un'area nella memoria stack dove tutti i valori interi nell'intervallo da -128 a 127 sono collegati. Questa ottimizzazione viene effettuata per migliorare le prestazioni nella gestione dei numeri in Java, poiché i numeri in questo intervallo sono comunemente utilizzati. Ricorda che la memoria stack opera più velocemente della memoria heap, quindi otteniamo risposte più rapide grazie all'Integer Pool;
  • Lo String Pool è un'area nella memoria heap dove vengono memorizzati i valori stringa identici.

Conclusione

In Java, tutto viene passato per valore. Per gli oggetti, viene passata una copia del riferimento, ma l'oggetto effettivo nell'heap rimane invariato (se è immutabile, come String).

Le variabili nello stack memorizzano riferimenti a oggetti situati nell'heap. Questo vale per tutti i tipi di riferimento, incluso String.

1. Che cos'è un Integer Pool in Java?

2. Come vengono passati i dati in Java, per riferimento o per valore?

question mark

Che cos'è un Integer Pool in Java?

Select the correct answer

question mark

Come vengono passati i dati in Java, per riferimento o per valore?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 2
some-alt