Bölüm 3 · Simülatör

Değer ile Aktarım Laboratuvarı

← Bölüm 3
Java kodu
    Çağrı yığını
    Heap
    Çıktı

    Değer ile Aktarım Laboratuvarı

    Amaç: Java'da bir metoda argüman geçirildiğinde ne kopyalandığını görmek. Java her zaman değer ile aktarım yapar: argümanın değeri parametreye kopyalanır. İlkel tiplerde bu değer sayının kendisidir; dizi, nesne ve String değişkenlerinde ise heap'teki nesnenin referansıdır. Nesnenin kendisi kopyalanmaz.

    Nasıl kullanılır?

    1. Soldan bir program seçin. Adım ▶ / ◀ Geri (klavyede → / ←), Oynat, Sıfırla.
    2. Ortada çağrı yığını: en altta main, en üstte şu an çalışan metodun çerçevesi (vurgulu). Sağda heap: new ile oluşturulan diziler ve nesneler. Referans tutan değişkenlerden çıkan ok, gösterdiği nesneye gider; son adımda değişen değer ve ok vurgulanır.
    3. Hiçbir değişkenin göstermediği nesne soluk ve kesik çizgili görünür: artık erişilemez, çöp toplayıcı onu temizleyebilir.
    4. Kendini dene açıkken bazı adımlarda sonucu tahmin edersiniz; adımın etkisi cevaptan sonra görünür.

    Akılda kalacaklar

    • Metot, parametresine yeni bir değer atarsa (x = …, d = new int[3], p = new Nokta()) yalnızca kendi kopyası değişir; çağırandaki değişken etkilenmez.
    • Metot, referansın gösterdiği nesneyi değiştirirse (d[0] = 99, p.x = …) çağıran da değişikliği görür, çünkü iki referans aynı nesneyi gösterir.
    • Bu yüzden iki referansı takas eden bir metot çağıranın değişkenlerini takas edemez.
    • String değiştirilemez: s + "!" yeni bir nesne oluşturur. Metodun sonucu çağırana return ile ulaştırılabilir.

    @1, @2 gibi adlar gösterim içindir; gerçek adresler JVM'e bağlıdır. Tüm programların çıktıları javac --release 8 + java ile doğrulanmıştır.

    İlgili sunum: Bölüm 3 · Fonksiyonlar (Değer ile Aktarım, Çağrı Yığını İzleme).