Tw33tst3r
Legacy Member
ik volg atm een opleiding java-ontwikkelaar bij de vdab en aangezien de docent mij tot nu toe op zo goed als geen enkele vraag antwoord heeft kunnen geven dacht ik hier es een poging te wagen (andere vragen heeft google mij gelukkig wel al beantwoord)
als je een String doorgeeft stond in mijn cursus dan gebeurt dit door passing by reference en niet by value
vb.
String a = "Test";
String b = a;
b = "niet test";
dan krijgt a ook de waarde "niet test" omdat b simpelweg naar dezelfde plaats in het geheugen verwijst, hence passing by reference
mijn vraag is nu:
wat gebeurt er juist als ik bvb een object aanmaak via een constructor of een method aanroep van een object waarbij ik een variabele gebruik als String parameter?
bvb.
String type = "mountainbike";
Fiets.setType(type);
method heeft dan volgende body:
Public void setType(String type){
this.type = type;
}
als ik dan nadien in main de waarde van type verander dan verandert uiteraard de property van mijn object Fiets niet, dat is logisch qua gebruik maar op dat moment pass ik eigenlijk toch een reference variabele en niet de waarde van die String?
nu ik had al het idee dat dit kwam omdat de property type enkel binnen de class block bestaat en dat deze daarom niet verandert maar waarom dan ook niet als deze public is en bijgevolg buiten de scope van het block valt?
andere optie dak kon bedenken was dat op het moment dat de method gecalled wordt deze de waarde van de string doorgeeft maar dat spreekt dan weer mijn cursus tegen
is mss een stomme vraag en ik ben ondertussen ook al veel verder in mijn cursus mr ik vroeg mij dat ineens af toen ik vr de zoveelste keer een reference variabele als parameter gebruikte
als je een String doorgeeft stond in mijn cursus dan gebeurt dit door passing by reference en niet by value
vb.
String a = "Test";
String b = a;
b = "niet test";
dan krijgt a ook de waarde "niet test" omdat b simpelweg naar dezelfde plaats in het geheugen verwijst, hence passing by reference
mijn vraag is nu:
wat gebeurt er juist als ik bvb een object aanmaak via een constructor of een method aanroep van een object waarbij ik een variabele gebruik als String parameter?
bvb.
String type = "mountainbike";
Fiets.setType(type);
method heeft dan volgende body:
Public void setType(String type){
this.type = type;
}
als ik dan nadien in main de waarde van type verander dan verandert uiteraard de property van mijn object Fiets niet, dat is logisch qua gebruik maar op dat moment pass ik eigenlijk toch een reference variabele en niet de waarde van die String?
nu ik had al het idee dat dit kwam omdat de property type enkel binnen de class block bestaat en dat deze daarom niet verandert maar waarom dan ook niet als deze public is en bijgevolg buiten de scope van het block valt?
andere optie dak kon bedenken was dat op het moment dat de method gecalled wordt deze de waarde van de string doorgeeft maar dat spreekt dan weer mijn cursus tegen

is mss een stomme vraag en ik ben ondertussen ook al veel verder in mijn cursus mr ik vroeg mij dat ineens af toen ik vr de zoveelste keer een reference variabele als parameter gebruikte
)