Dataoverførsel i Java
Hvordan information overføres 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
123456789package 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
intikke gemmes i bunkehukommelsen; dens værdi gemmes direkte i stakhukommelsen. Dette gælder for alle primitive datatyper (byte,short,int,long,float,doubleogboolean). Dermed videregives primitive datatyper i Java som værdier. Dog erStringikke 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
-128til127er linket. 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 heap forbliver uændret (hvis det er uforanderligt, som String).
Variabler i stacken gemmer referencer til objekter placeret i heapen. 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?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Dataoverførsel i Java
Stryg for at vise menuen
Hvordan information overføres 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
123456789package 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
intikke gemmes i bunkehukommelsen; dens værdi gemmes direkte i stakhukommelsen. Dette gælder for alle primitive datatyper (byte,short,int,long,float,doubleogboolean). Dermed videregives primitive datatyper i Java som værdier. Dog erStringikke 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
-128til127er linket. 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 heap forbliver uændret (hvis det er uforanderligt, som String).
Variabler i stacken gemmer referencer til objekter placeret i heapen. 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?
Tak for dine kommentarer!