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
course content

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Datatransport 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

course content

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Datatransport 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
some-alt