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); // պարամետրը now հղում է նոր օբյեկտի, իսկ հին հղումը մնում է նույնը
}
// Օգտագործում
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject-ի value now 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject հղում է նույն օբյեկտին, բայց չի փոխվում
Ամփոփում՝
- Հղման արժեքը (հասցեն) փոխանցվում է, ոչ թե ինքն օբյեկտը:
- Այս կերպ հնարավոր է փոխել օբյեկտի վիճակը, բայց չի փոխվում հղման արժեքը։