Gegevensoverdracht in Java
Hoe informatie wordt overgedragen in Java
Uit de vorige cursus weet je dat er twee typen geheugen zijn - stack en heap. Hier volgt een overzicht van hoe gegevens in deze twee geheugengebieden worden opgeslagen:
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; } }
Er zijn 3 verschillende variabelen aangemaakt. Hieronder staat een diagram dat illustreert hoe en waar deze in het geheugen worden opgeslagen:
Laten we doornemen wat je hebt waargenomen in het diagram:
- We zien
String-velden in het stackgeheugen die verwijzingen zijn naar waarden in het heapgeheugen. Op deze manier hebben we niet elke keer direct toegang tot het heapgeheugen. In plaats daarvan benaderen we eerst de verwijzing in het stackgeheugen, wat sneller is dan toegang tot het heapgeheugen. Je bent al eerder verwijzingen naar waarden tegengekomen bij het leren over het onderwerp String Pool; - Je ziet dat
intniet wordt opgeslagen in het heapgeheugen; de waarde wordt direct opgeslagen in het stackgeheugen. Dit geldt voor alle primitieve datatypes (byte,short,int,long,float,doubleenboolean). Dus, primitieve datatypes worden in Java doorgegeven via waarde. Echter,Stringis geen primitief datatype, dus de waarde wordt opgeslagen in het heapgeheugen; - Voor elke nieuwe verwijzing wordt een nieuw object aangemaakt in het heapgeheugen. Maar als twee variabelen van hetzelfde type dezelfde waarde hebben, verwijzen ze naar hetzelfde object in het heapgeheugen;
- De Integer Pool is een gebied in het stackgeheugen waar alle gehele waarden in het bereik van
-128tot127zijn gekoppeld. Deze optimalisatie wordt uitgevoerd om de prestaties van het omgaan met getallen in Java te verbeteren, aangezien getallen in dit bereik vaak worden gebruikt. Onthoud dat het stackgeheugen sneller werkt dan het heapgeheugen, waardoor we snellere reacties krijgen dankzij de Integer Pool; - De String Pool is een gebied in het heapgeheugen waar identieke stringwaarden worden opgeslagen.
Conclusie
In Java wordt alles doorgegeven via waarde. Voor objecten wordt een kopie van de referentie doorgegeven, maar het daadwerkelijke object in de heap blijft ongewijzigd (als het onveranderlijk is, zoals String).
Variabelen in de stack slaan verwijzingen op naar objecten die zich in de heap bevinden. Dit geldt voor alle referentietypen, inclusief String.
1. Wat is een Integer Pool in Java?
2. Hoe worden gegevens doorgegeven in Java, via referentie of via waarde?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 2.63
Gegevensoverdracht in Java
Veeg om het menu te tonen
Hoe informatie wordt overgedragen in Java
Uit de vorige cursus weet je dat er twee typen geheugen zijn - stack en heap. Hier volgt een overzicht van hoe gegevens in deze twee geheugengebieden worden opgeslagen:
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; } }
Er zijn 3 verschillende variabelen aangemaakt. Hieronder staat een diagram dat illustreert hoe en waar deze in het geheugen worden opgeslagen:
Laten we doornemen wat je hebt waargenomen in het diagram:
- We zien
String-velden in het stackgeheugen die verwijzingen zijn naar waarden in het heapgeheugen. Op deze manier hebben we niet elke keer direct toegang tot het heapgeheugen. In plaats daarvan benaderen we eerst de verwijzing in het stackgeheugen, wat sneller is dan toegang tot het heapgeheugen. Je bent al eerder verwijzingen naar waarden tegengekomen bij het leren over het onderwerp String Pool; - Je ziet dat
intniet wordt opgeslagen in het heapgeheugen; de waarde wordt direct opgeslagen in het stackgeheugen. Dit geldt voor alle primitieve datatypes (byte,short,int,long,float,doubleenboolean). Dus, primitieve datatypes worden in Java doorgegeven via waarde. Echter,Stringis geen primitief datatype, dus de waarde wordt opgeslagen in het heapgeheugen; - Voor elke nieuwe verwijzing wordt een nieuw object aangemaakt in het heapgeheugen. Maar als twee variabelen van hetzelfde type dezelfde waarde hebben, verwijzen ze naar hetzelfde object in het heapgeheugen;
- De Integer Pool is een gebied in het stackgeheugen waar alle gehele waarden in het bereik van
-128tot127zijn gekoppeld. Deze optimalisatie wordt uitgevoerd om de prestaties van het omgaan met getallen in Java te verbeteren, aangezien getallen in dit bereik vaak worden gebruikt. Onthoud dat het stackgeheugen sneller werkt dan het heapgeheugen, waardoor we snellere reacties krijgen dankzij de Integer Pool; - De String Pool is een gebied in het heapgeheugen waar identieke stringwaarden worden opgeslagen.
Conclusie
In Java wordt alles doorgegeven via waarde. Voor objecten wordt een kopie van de referentie doorgegeven, maar het daadwerkelijke object in de heap blijft ongewijzigd (als het onveranderlijk is, zoals String).
Variabelen in de stack slaan verwijzingen op naar objecten die zich in de heap bevinden. Dit geldt voor alle referentietypen, inclusief String.
1. Wat is een Integer Pool in Java?
2. Hoe worden gegevens doorgegeven in Java, via referentie of via waarde?
Bedankt voor je feedback!