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