Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dataoverførsel i Java | Dyb Java-Struktur
Java Udvidet

bookDataoverførsel i Java

Hvordan overføres information i Java?

Du ved fra det forrige kursus, at der findes to typer hukommelse - stack og heap. Lad os se på, hvordan data gemmes i disse to hukommelsesområder:

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 oprettet 3 forskellige variabler. Nedenfor ses et diagram, der illustrerer, hvordan og hvor de vil blive gemt i hukommelsen:

Lad os gennemgå, hvad du observerede i diagrammet:

  • Vi ser String-felter i stakhukommelsen, som er henvisninger til værdier i bunkehukommelsen. På denne måde får vi ikke direkte adgang til bunkehukommelsen hver gang. I stedet tilgår vi først henvisningen i stakhukommelsen, hvilket er hurtigere end at tilgå bunkehukommelsen. Du har allerede stødt på henvisninger til værdier, da du lærte om emnet String Pool;
  • Du kan se, at int ikke gemmes i bunkehukommelsen; dens værdi gemmes direkte i stakhukommelsen. Dette gælder for alle primitive datatyper (byte, short, int, long, float, double og boolean). Dermed videregives primitive datatyper i Java som værdier. Dog er String ikke en primitiv datatype, så dens værdi gemmes i bunkehukommelsen;
  • Et nyt objekt oprettes i bunkehukommelsen for hvert nyt link. Men hvis to variabler af samme type har samme værdi, vil de referere til det samme objekt i bunkehukommelsen;
  • Integer Pool er et område i stakhukommelsen, hvor alle heltalsværdier i intervallet fra -128 til 127 er forbundet. Denne optimering udføres for at forbedre ydeevnen ved håndtering af tal i Java, da tal i dette interval ofte bruges. Husk, at stakhukommelsen arbejder hurtigere end bunkehukommelsen, så vi får hurtigere svar takket være Integer Pool;
  • String Pool er et område i bunkehukommelsen, hvor identiske strengværdier gemmes.

Konklusion

I Java videregives alt som værdi. For objekter videregives en kopi af referencen, men det faktiske objekt i bunkehukommelsen forbliver uændret (hvis det er uforanderligt, som String).

Variabler i stakken gemmer referencer til objekter placeret i bunkehukommelsen. Dette gælder for alle referencetyper, inklusive String.

1. Hvad er en Integer Pool i Java?

2. Hvordan overføres data i Java, ved reference eller ved værdi?

question mark

Hvad er en Integer Pool i Java?

Select the correct answer

question mark

Hvordan overføres data i Java, ved reference eller ved værdi?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 2.63

bookDataoverførsel i Java

Stryg for at vise menuen

Hvordan overføres information i Java?

Du ved fra det forrige kursus, at der findes to typer hukommelse - stack og heap. Lad os se på, hvordan data gemmes i disse to hukommelsesområder:

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 oprettet 3 forskellige variabler. Nedenfor ses et diagram, der illustrerer, hvordan og hvor de vil blive gemt i hukommelsen:

Lad os gennemgå, hvad du observerede i diagrammet:

  • Vi ser String-felter i stakhukommelsen, som er henvisninger til værdier i bunkehukommelsen. På denne måde får vi ikke direkte adgang til bunkehukommelsen hver gang. I stedet tilgår vi først henvisningen i stakhukommelsen, hvilket er hurtigere end at tilgå bunkehukommelsen. Du har allerede stødt på henvisninger til værdier, da du lærte om emnet String Pool;
  • Du kan se, at int ikke gemmes i bunkehukommelsen; dens værdi gemmes direkte i stakhukommelsen. Dette gælder for alle primitive datatyper (byte, short, int, long, float, double og boolean). Dermed videregives primitive datatyper i Java som værdier. Dog er String ikke en primitiv datatype, så dens værdi gemmes i bunkehukommelsen;
  • Et nyt objekt oprettes i bunkehukommelsen for hvert nyt link. Men hvis to variabler af samme type har samme værdi, vil de referere til det samme objekt i bunkehukommelsen;
  • Integer Pool er et område i stakhukommelsen, hvor alle heltalsværdier i intervallet fra -128 til 127 er forbundet. Denne optimering udføres for at forbedre ydeevnen ved håndtering af tal i Java, da tal i dette interval ofte bruges. Husk, at stakhukommelsen arbejder hurtigere end bunkehukommelsen, så vi får hurtigere svar takket være Integer Pool;
  • String Pool er et område i bunkehukommelsen, hvor identiske strengværdier gemmes.

Konklusion

I Java videregives alt som værdi. For objekter videregives en kopi af referencen, men det faktiske objekt i bunkehukommelsen forbliver uændret (hvis det er uforanderligt, som String).

Variabler i stakken gemmer referencer til objekter placeret i bunkehukommelsen. Dette gælder for alle referencetyper, inklusive String.

1. Hvad er en Integer Pool i Java?

2. Hvordan overføres data i Java, ved reference eller ved værdi?

question mark

Hvad er en Integer Pool i Java?

Select the correct answer

question mark

Hvordan overføres data i Java, ved reference eller ved værdi?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 2
some-alt