Манъ кардани параметрҳо бо арзиш чӣ маъно дорад?
sobes.tech AI
Ҷавоб аз AI
Параметрлерді мән бойынша беру дегеніміз, әдіске айнымалының көшіру мәні беріледі дегенді білдіреді. Әдістегі параметрге енгізілген кез келген өзгерістер сыртқы айнымалыға әсер етпейді.
Примитивті типтер үшін (мысалы, int, float, boolean және т.б.) — мәннің көшірмесі беріледі.
Сілтемелі типтер үшін (объектілер) — объектіге сілтеменің көшірмесі беріледі. Бұл әдісте параметрге сілтеме жасалған объектіні өзгертуге болады (мысалы, объектінің өрістерін өзгерту), және бұл өзгерістер әдістен тыс көрінеді, себебі екі сілтеме бірдей жадыдағы объектіге көрсетеді. Алайда, егер әдістегі сілтемеге жаңа объект (жаңа объект құрып, оған сілтеме жасау) берілсе, онда сыртқы сілтеме өзгермейді.
Примитивті тип үшін мысал:
public class PassByValueExample {
public static void changeValue(int number) {
number = number + 10; // мәннің көшірмесін өзгерту
// System.out.println("Inside method: " + number); // демонстрация үшін
}
public static void main(String[] args) {
int x = 5;
changeValue(x);
// System.out.println("Outside method: " + x); // x өзгермейді, 5 қалады
}
}
Сілтемелі тип үшін мысал:
class MyObject {
int value;
MyObject(int value) {
this.value = value;
}
}
public class PassByValueReferenceExample {
public static void modifyObject(MyObject obj) {
obj.value = obj.value + 10; // объектінің өрісін өзгерту
}
public static void reassignObject(MyObject obj) {
obj = new MyObject(100); // параметрге жаңа сілтеме беру
// System.out.println("Inside reassignObject: " + obj.value); // демонстрация үшін
}
public static void main(String[] args) {
MyObject myObj = new MyObject(5);
modifyObject(myObj);
// System.out.println("After modifyObject: " + myObj.value); // мәні 15 болады
MyObject anotherObj = new MyObject(20);
reassignObject(anotherObj);
// System.out.println("After reassignObject: " + anotherObj.value); // мәні өзгермейді, 20 қалады
}
}