Datatransfer i Java
Sveip for å vise menyen
Hvordan informasjon overføres i Java
Fra forrige kurs vet du at det finnes to typer minne – stack og heap. La oss se på hvordan data lagres i disse to minneområdene:
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; } }
Det er opprettet 3 ulike variabler. Nedenfor vises et diagram som illustrerer hvordan og hvor de lagres i minnet:
La oss gå gjennom det du observerte i diagrammet:
- Vi ser
String-felt i stakkminnet som er lenker 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 lenken i stakkminnet, noe som er raskere enn å få tilgang til heap-minnet. Du har allerede støtt på lenker til verdier når du lærte om String Pool-emnet; - Du kan se at
intikke lagres i heap-minnet; verdien lagres direkte i stakkminnet. Dette gjelder alle primitive datatyper (byte,short,int,long,float,doubleogboolean). Dermed sendes primitive datatyper i Java som verdier. MenStringer ikke en primitiv datatype, så verdien lagres i heap-minnet; - Et nytt objekt opprettes i heap-minnet for hver ny lenke. 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
-128til127er lenket. 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 heap forblir uendret (hvis det er uforanderlig, som String).
Variabler i stakken lagrer referanser til objekter som befinner seg i heap. Dette gjelder alle referansetyper, inkludert String.
1. Hva er en Integer Pool i Java?
2. Hvordan overføres data i Java, ved referanse eller ved verdi?
Alt var klart?
Takk for tilbakemeldingene dine!
Seksjon 1. Kapittel 2
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 6.67Seksjon 1. Kapittel 2