Sobes.tech
Junior

Өзгөрмөлөр кандайча ыкмаларга өткөрүлөт?

sobes.tech AI

AIден жооп

Javaда өзгөрмөлөр методторго мааниси менен өткөрүлөт.

Бул деген, методду чакырганда, өзгөрмөнүн маанисинин көчүрмөсү түзүлөт жана ошол көчүрмө методго өткөрүлөт. Методтун ичинде параметрге жасалган өзгөртүүлөр гана ошол көчүрмөгө таасир этет жана оригиналдуу өзгөрмөгө тийбейт.

Примитивдүү маалымат түрлөрү (int, float, boolean ж.б.) түз мааниде өткөрүлөт.

// Примитивдүү маалымат түрү
int a = 10;

void changeValue(int x) {
  x = 20; // Көчүрмө өзгөрөт, 'a' оригиналдуу өзгөрмө эмес
}

changeValue(a);
// Метод чакырылган соң, 'a' дагы эле 10

Объекттер жана массивдер сыяктуу шилтемелер түрлөрү үчүн, объектке шилтеменин көчүрмөсү өткөрүлөт. Шилтеме өзү көчүрүлөт, бирок эки шилтеме бир эле объектке көрсөтөт. Методтун ичинде өткөрүлгөн шилтеме аркылуу объекттин абалына жасалган өзгөртүүлөр сырттан көрүнөт. Бирок, шилтемени кайра белгилөө методдун ичинде оригинал шилтемеге таасир этпейт.

// Шилтемелер түрү
class MyObject {
    int value;
}

MyObject obj = new MyObject();
obj.value = 10;

void changeObjectValue(MyObject o) {
  o.value = 20; // Объекттин абалын өзгөртөт, сырттан көрүнөт
}

void reassignObject(MyObject o) {
  o = new MyObject(); // Локалдык шилтемени кайра белгилейт, 'obj'ка таасир этпейт
  o.value = 30;
}

changeObjectValue(obj);
// Метод чакырылган соң, obj.value 20 болот

reassignObject(obj);
// Метод чакырылган соң, 'obj' дагы эле ошол эле объектке көрсөтөт, жана obj.value 20 болот
// reassignObject ичинде түзүлгөн жаңы MyObject сырттан жеткиликтүү эмес

Жыйынтыктап айтканда, Java дайыма мааниси менен өткөрөт, бирок шилтемелер түрлөрү үчүн, шилтеменин мааниси көчүрүлөт, өзү эмес.