Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Datatransport i Java | Dyp Java-struktur
Java Utvidet

bookDatatransport i Java

Hvordan overføres informasjon i Java?

Du vet fra forrige kurs at det finnes to typer minne – stack og heap. La oss se på hvordan data lagres i disse to minneområdene:

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; } }

Vi har opprettet 3 ulike variabler. Nedenfor er et diagram som illustrerer hvordan og hvor de vil bli lagret i minnet:

La oss gå gjennom det du observerte i diagrammet:

  • Vi ser String-felt i stakkminnet som er pekere til verdier i heap-minnet. På denne måten får vi ikke direkte tilgang til heap-minnet hver gang. I stedet får vi først tilgang til pekeren i stakkminnet, noe som er raskere enn å få tilgang til heap-minnet. Du har allerede støtt på pekere til verdier da du lærte om emnet String Pool;
  • Du kan se at int ikke lagres i heap-minnet; verdien lagres direkte i stakkminnet. Dette gjelder for alle primitive datatyper (byte, short, int, long, float, double og boolean). Dermed sendes primitive datatyper i Java som verdier. String er derimot ikke en primitiv datatype, så verdien lagres i heap-minnet;
  • Et nytt objekt opprettes i heap-minnet for hver ny peker. Men hvis to variabler av samme type har samme verdi, vil de referere til det samme objektet i heap-minnet;
  • Integer Pool er et område i stakkminnet hvor alle heltallsverdier i området fra -128 til 127 er koblet. Denne optimaliseringen gjøres for å forbedre ytelsen ved håndtering av tall i Java, siden tall i dette området ofte brukes. Husk at stakkminnet opererer raskere enn heap-minnet, så vi får raskere responser takket være Integer Pool;
  • String Pool er et område i heap-minnet hvor identiske strengverdier lagres.

Konklusjon

I Java sendes alt som verdi. For objekter sendes en kopi av referansen, men det faktiske objektet i heapen forblir uendret (hvis det er uforanderlig, som String).

Variabler i stakken lagrer referanser til objekter som ligger i heapen. Dette gjelder for alle referansetyper, inkludert String.

1. Hva er en Integer Pool i Java?

2. Hvordan overføres data i Java, ved referanse eller ved verdi?

question mark

Hva er en Integer Pool i Java?

Select the correct answer

question mark

Hvordan overføres data i Java, ved referanse eller ved verdi?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain the difference between stack and heap memory in more detail?

How does passing by value work for objects in Java?

What is the String Pool and why is it important?

Awesome!

Completion rate improved to 2.63

bookDatatransport i Java

Sveip for å vise menyen

Hvordan overføres informasjon i Java?

Du vet fra forrige kurs at det finnes to typer minne – stack og heap. La oss se på hvordan data lagres i disse to minneområdene:

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; } }

Vi har opprettet 3 ulike variabler. Nedenfor er et diagram som illustrerer hvordan og hvor de vil bli lagret i minnet:

La oss gå gjennom det du observerte i diagrammet:

  • Vi ser String-felt i stakkminnet som er pekere til verdier i heap-minnet. På denne måten får vi ikke direkte tilgang til heap-minnet hver gang. I stedet får vi først tilgang til pekeren i stakkminnet, noe som er raskere enn å få tilgang til heap-minnet. Du har allerede støtt på pekere til verdier da du lærte om emnet String Pool;
  • Du kan se at int ikke lagres i heap-minnet; verdien lagres direkte i stakkminnet. Dette gjelder for alle primitive datatyper (byte, short, int, long, float, double og boolean). Dermed sendes primitive datatyper i Java som verdier. String er derimot ikke en primitiv datatype, så verdien lagres i heap-minnet;
  • Et nytt objekt opprettes i heap-minnet for hver ny peker. Men hvis to variabler av samme type har samme verdi, vil de referere til det samme objektet i heap-minnet;
  • Integer Pool er et område i stakkminnet hvor alle heltallsverdier i området fra -128 til 127 er koblet. Denne optimaliseringen gjøres for å forbedre ytelsen ved håndtering av tall i Java, siden tall i dette området ofte brukes. Husk at stakkminnet opererer raskere enn heap-minnet, så vi får raskere responser takket være Integer Pool;
  • String Pool er et område i heap-minnet hvor identiske strengverdier lagres.

Konklusjon

I Java sendes alt som verdi. For objekter sendes en kopi av referansen, men det faktiske objektet i heapen forblir uendret (hvis det er uforanderlig, som String).

Variabler i stakken lagrer referanser til objekter som ligger i heapen. Dette gjelder for alle referansetyper, inkludert String.

1. Hva er en Integer Pool i Java?

2. Hvordan overføres data i Java, ved referanse eller ved verdi?

question mark

Hva er en Integer Pool i Java?

Select the correct answer

question mark

Hvordan overføres data i Java, ved referanse eller ved verdi?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 2
some-alt