Sobes.tech
Junior

Javaда методторго параметрлер кандайча өткөрүлөт?

sobes.tech AI

AIден жооп

Javaда параметрлер методторго мааниге (pass-by-value) аркылуу өткөрүлөт.

Примитивдүү түрлөр:

  • Примитивдин көчүрмөсү өткөрүлөт. Методтун ичинде параметр өзгөртүлсө да, анын сырткы өзгөрмөсүнө таасир этпейт.
// Примитивдүү түр үчүн мисал
public void changeValue(int x) {
    x = x + 10; // Методтун ичинде xнин көчүрмөсү өзгөртүлөт
}

// Колдонуу:
int original = 5;
changeValue(original);
// original 5 бойдон калат

Объекттер (ссылочные типтер):

  • Ссылка көчүрмөсү өткөрүлөт. Эки ссылка (баштапкы жана методтогу параметр) бир эле объектке көрсөтөт.
  • Объекттин абалын өзгөртүү (мисалы, сеттерди колдонуу, талаалардын маанисин өзгөртүү) метод аркылуу өткөрүлгөн ссылка аркылуу баштапкы объектке таасир этет.
  • Методтун ичинде параметрди жаңы объектке переприсваивание кылуу баштапкы ссылкага таасир этпейт.
// Ссылочный тип үчүн мисал (объект)
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); // Баштапкы объекттин абалы өзгөрөт
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Параметр obj жаңы объектке көрсөтөт, баштапкы ссылка өзгөрбөйт
}

// Колдонуу:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject азыр value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject дагы эле баштапкы объектке көрсөтөт, value = 50

Кыскасы: Ссылка мааниси (анын дареги) өткөрүлөт, объект эмес. Бул объектти ошол ссылка аркылуу өзгөртүүгө мүмкүнчүлүк берет, бирок баштапкы ссылка башка объектке өзгөртүүнү камсыз кылбайт.