Nesne parametresi
- Java kursu
- Başlangıç
- Ders 78/116
- 4 dk
Nesne referansı geçmeyi öğrenirsin.
Nesne parametreleri
Bir nesneyi (örneğin ArrayList veya dizi) metoda geçtiğinde, aslında nesnenin referansının kopyası geçer. Yani metot, aynı nesneye erişir.
static void addOne(ArrayList<Integer> list) {
list.add(1);
}
ArrayList<Integer> xs = new ArrayList<>();
addOne(xs);
// xs: [1]Metot içinde list.add(1) yapınca, dışarıdaki xs de değişir. Çünkü ikisi aynı nesneyi gösterir. Yeni bir liste atarsan (list = new ArrayList<>()) dışarıyı etkilemez.
Referans atama dışarıyı etkilemez
Metot içinde parametreyi yeni bir nesneye atarsan, dışarıdaki nesne değişmez. Sadece metodun kendi referansı yeni nesneyi göstermeye başlar.
static void reset(ArrayList<Integer> list) {
list = new ArrayList<>(); // dışarıyı etkilemez
}
ArrayList<Integer> xs = new ArrayList<>();
xs.add(9);
reset(xs);
// xs hâlâ [9]Yani nesnenin içeriğini değiştirmek dışarıyı etkiler; referansı yeniden atamak etkilemez.
Uygulama Listeye değer ekle
addItem adında static void metot tanımla; parametre ArrayList<Integer> list, int value. Gövde, list.add(value) yapsın. main içinde bir liste oluştur, addItem(liste, 7) çağır ve listeyi yazdır.
Başlangıç kodu
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
// addItem metodunu 7 değeriyle çağır
// Listeyi yazdır
}
// addItem metodunu buraya tanımla
}Örnek çözüm
static void addItem(ArrayList<Integer> list, int value) {
list.add(value);
}
// main içinde:
addItem(list, 7);
System.out.println(list);Beklenen çıktı
[7]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boşluğu doldur: listeye eleman ekle
static void addOne(ArrayList<Integer> list) {
list.____(1);
}
static void addOne(ArrayList<Integer> list) {
list.add(1);
}
Açıklama: list.add(1) hem metotta hem dışarıda listeyi değiştirir.
2 Senaryo ve sonuç eşleştir
| Kavram | Anlamı |
|---|---|
list.add(1) |
Dışarıdaki liste değişir |
list = new ArrayList<>() |
Dışarıdaki liste aynı kalır |
list.clear() |
Dışarıdaki liste boşalır |
int n = 5; zero(n); |
n değişmez |
3 Bir ArrayList'i metoda geçirip metot içinde list.add(...) yaparsan ne olur?
- Dışarıdaki liste değişir
- Derleme hatası verir
- Dışarıdaki liste değişmez Doğru cevap
- Yeni bir kopya oluşur
Açıklama: Referans kopyası aynı nesneyi gösterir; add dışarıyı değiştirir.