Hoe worden variabelen doorgegeven aan methoden?
sobes.tech AI
Antwoord van AI
In Java worden variabelen door waarde aan methoden doorgegeven.
Dit betekent dat bij het aanroepen van een methode een kopie van de waarde van de variabele wordt gemaakt, en deze kopie wordt aan de methode doorgegeven. Wijzigingen die binnen de methode aan de parameter worden aangebracht, beïnvloeden alleen deze kopie en niet de oorspronkelijke variabele.
Voor primitieve datatypes (int, float, boolean, etc.) wordt de directe waarde doorgegeven.
// Primitief datatype
int a = 10;
void changeValue(int x) {
x = 20; // Kopie wordt gewijzigd, niet de oorspronkelijke variabele 'a'
}
changeValue(a);
// Na het aanroepen van de methode blijft 'a' 10
Voor referentietypen (objecten, arrays) wordt een kopie van de referentie naar het object doorgegeven. De referentie zelf wordt gekopieerd, maar beide referenties wijzen naar hetzelfde object in het geheugen. Veranderingen aan de toestand van het object, gedaan binnen de methode via de doorgegeven referentie, zijn zichtbaar buiten de methode. Het opnieuw toewijzen van de referentie binnen de methode heeft echter geen invloed op de originele referentie.
// Referentietype
class MyObject {
int value;
}
MyObject obj = new MyObject();
obj.value = 10;
void changeObjectValue(MyObject o) {
o.value = 20; // Verandert de toestand van het object, zichtbaar van buitenaf
}
void reassignObject(MyObject o) {
o = new MyObject(); // Wijzigt de lokale referentie, heeft geen invloed op 'obj'
o.value = 30;
}
changeObjectValue(obj);
// Na de aanroep is obj.value 20
reassignObject(obj);
// Na de aanroep wijst 'obj' nog steeds naar hetzelfde object, en obj.value is 20
// Het nieuwe MyObject dat binnen reassignObject is gemaakt, is niet extern toegankelijk
Kortom, Java gebruikt altijd pass-by-value, maar voor referentietypen wordt de waarde van de referentie gekopieerd, niet het object zelf.