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!
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