Sobes.tech
Junior

Kuidas edastatakse parameetreid Java meetodites?

sobes.tech AI

Vastus AI-lt

Java meetodites parameetrid edastatakse väärtusena (pass-by-value).

Primitiivsed tüübid:

  • Edastatakse primitiivse väärtuse koopia. Muutmine meetodi sees ei mõjuta väliseid muutujaid.
// Näide primitiivse tüübi jaoks
public void changeValue(int x) {
    x = x + 10; // Muudetakse meetodi sees koopia x
}

// Kasutamine:
int original = 5;
changeValue(original);
// original jääb 5-ks

Objektid (viidetüübid):

  • Edastatakse viite koopia. Mõlemad viited (peamine ja meetodi parameeter) osutavad samale objektile mälus.
  • Objekti oleku muutmine (näiteks setteri väljakutse või väljade muutmine) parameetri kaudu meetodi sees mõjutab algset objekti.
  • Parameetri ümbermääramine uue objektiga meetodi sees ei muuda algset viidet.
// Näide viidetüübi (objekti) kohta
public class MyObject {
    private int value;

    public MyObject(int value) {
        this.value = value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

public void modifyObject(MyObject obj) {
    obj.setValue(100); // Objekti oleku muutmine
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Parameeter obj osutab nüüd uuele objektile, algne viide ei muutu
}

// Kasutamine:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject väärtus on nüüd 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject endiselt osutab algsele objektile, mille väärtus on 50

Kokkuvõtteks: Viite väärtus (aadress) edastatakse, mitte ise objekt. See võimaldab objekti muuta viite kaudu, kuid mitte muuta algset viidet teisele objektile.