Junior
Java'da metodlara parametreler nasıl iletilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java'da metodlardaki parametreler değer ile (pass-by-value) geçirilir.
İlkel Tipler:
- İlkel tipin bir kopyası geçirilir. Metod içindeki parametre üzerinde yapılan değişiklikler, dışarıdaki orijinal değişkeni etkilemez.
// İlkel tip örneği
public void changeValue(int x) {
x = x + 10; // Metod içindeki kopya x değiştirilir
}
// Kullanım:
int original = 5;
changeValue(original);
// original 5 olarak kalır
Nesneler (referans tipleri):
- Nesneye ait referansın bir kopyası geçirilir. Hem orijinal referans hem de metod içindeki parametre referansı aynı nesneye işaret eder.
- Referans aracılığıyla nesnenin durumu (örneğin, setter çağrısı, alanların değiştirilmesi) değiştirilirse, bu orijinal nesne üzerinde etkili olur.
- Parametreyi yeni bir nesneye yeniden atamak, dışarıdaki referansı değiştirmez.
// Referans tipi (nesne) örneği
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); // Orijinal nesnenin durumu değiştirilir
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // parametre yeni bir nesneye işaret eder, orijinal referans değişmez
}
// Kullanım:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject'in değeri 100 olur
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject hala orijinal nesneye işaret eder, değeri 50
Özetle: Referansın değeri (adres) geçirilir, nesne değil. Bu, nesneyi bu referans aracılığıyla değiştirmeye olanak tanır, ancak orijinal referansı başka bir nesneye yönlendirmeyi değiştirmez.