Kā mainīgie tiek nodoti metodēm?
sobes.tech AI
Atbilde no AI
Java valkā vērtības nodošanu metodēm.
Tas nozīmē, ka, izsaucot metodi, tiek izveidots vērtības kopija, un tieši šī kopija tiek nodota metodē. Izmaiņas, kas veiktas parametrā metodē, ietekmē tikai šo kopiju un neietekmē sākotnējo mainīgo.
Primitīviem datu tipiem (int, float, boolean utt.) tiek nodota tieša vērtība.
// Primitīvs datu tips
int a = 10;
void changeValue(int x) {
x = 20; // Mainās kopija, ne sākotnējā mainīgā 'a'
}
changeValue(a);
// Pēc metodes izsaukšanas 'a' joprojām ir 10
Saites datu tipu gadījumā (objekti, masīvi) tiek nodota objekta saites kopija. Paša saite tiek kopēta, bet abas saites norāda uz to pašu objektu atmiņā. Izmaiņas objekta stāvoklī, kas veiktas metodē, izmantojot nodoto saiti, būs redzamas ārpus metodes. Tomēr saites pārrakstīšana metodē neietekmēs sākotnējo saiti.
// Saites datu tips
class MyObject {
int value;
}
MyObject obj = new MyObject();
obj.value = 10;
void changeObjectValue(MyObject o) {
o.value = 20; // Maina objekta stāvokli, redzams ārpusē
}
void reassignObject(MyObject o) {
o = new MyObject(); // Pārraksta lokālo saiti, neietekmē sākotnējo 'obj'
o.value = 30;
}
changeObjectValue(obj);
// Pēc metodes izsaukšanas obj.value ir 20
reassignObject(obj);
// Pēc metodes izsaukšanas obj joprojām norāda uz to pašu objektu, obj.value ir 20
// Jauns MyObject, kas izveidots iekš reassignObject, nav pieejams ārpus tā
Tādējādi Java vienmēr izmanto vērtības nodošanu, bet saistīto tipu gadījumā tiek kopēta saites vērtība, nevis objekts pats.