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

bookDatatransport i Java

Hvordan informasjon overføres 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 forskjellige 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 tilgang til heap-minnet direkte hver gang. I stedet får vi først tilgang til pekeren i stakkminnet, som er raskere enn å få tilgang til heap-minnet. Du har allerede støtt på pekere til verdier da du lærte om String Pool-emnet;
  • 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. Men String er 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 more about the difference between stack and heap memory?

What is the String Pool and how does it work in Java?

Can you give an example of how passing by value works with objects in Java?

Awesome!

Completion rate improved to 2.63

bookDatatransport i Java

Sveip for å vise menyen

Hvordan informasjon overføres 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 forskjellige 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 tilgang til heap-minnet direkte hver gang. I stedet får vi først tilgang til pekeren i stakkminnet, som er raskere enn å få tilgang til heap-minnet. Du har allerede støtt på pekere til verdier da du lærte om String Pool-emnet;
  • 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. Men String er 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