Sobes.tech
Junior

Kā parametri tiek nodoti Java metodēs?

sobes.tech AI

Atbilde no AI

Java metodēs parametri tiek tiekti pēc vērtības (pass-by-value).

Primitīvie tipi:

  • Tiek nodota primitivā vērtības kopija. Modificējot parametru metodē, tas neietekmē ārējo mainīgo.
// Piemērs primitivam
public void changeValue(int x) {
    x = x + 10; // Modificēta ir kopija x metodē
}

// Lietošana:
int original = 5;
changeValue(original);
// original paliek 5

Objekti (saites tipi):

  • Tiek nodota saites kopija. Abas saites (galvenā un parametra saite) norāda uz to pašu objektu atmiņā.
  • Objekta stāvokļa maiņa (piemēram, izsaucot setter vai modificējot laukus) caur nodoto saiti metodē ietekmēs sākotnējo objektu.
  • Parametra pāriešana uz jaunu objektu metodē neizmainīs sākotnējo saiti.
// Piemērs saites tipa (objekta)
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); // Mainīgā objekta stāvoklis tiek mainīts
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Parametrs obj tagad norāda uz jaunu objektu, sākotnējā saite nemainās
}

// Lietošana:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject tagad ir value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject joprojām norāda uz sākotnējo objektu ar value = 50

Īsumā: Saites vērtība (adrese) tiek nodota, ne pats objekts. Tas ļauj modificēt objektu caur šo saiti, bet ne mainīt pašu sākotnējo saiti uz citu objektu.