Pass by reference nedir? yazısına yapılan yorumlar https://hasscript.com/671/pass-by-reference-nedir/ Mon, 12 Dec 2016 15:55:48 +0000 hourly 1 https://wordpress.org/?v=7.0.2 Yazar: kenan https://hasscript.com/671/pass-by-reference-nedir/#comment-759 Mon, 12 Dec 2016 15:55:48 +0000 #comment-759 Bir fonksiyon içine geçirilen değerin fonksiyonun dışında da değişeceği yönteme denir. 

Yani açıklayalım.

public class Test {
   public void buyukluk(List<String> a) {
       System.out.print(a.size());
   }

  private static void test(List<String> x) {
     x.add(“Test”);
  }
  public static void main(String… args) {
   ArrayList<String>  a = new ArrayList<>();
   buyukluk(a);
   test(a);
   buyukluk(a);    
  }
}

Burada main metodumuzu konuşalım. a diye bir değişkenimiz var ve bu bir arraylist. Büyüklüğüne bakıyoruz sonuc 0 olacaktır. Sonra test metodunun içine a değişkenini geçiriyoruz ve test metodunda da a’nın içine bir değer ekliyoruz. Daha sonradan a’nın büyüklüğüne bakarsak bunun 1 olduğunu göreceğiz. Peki buradan ne anlamamız gerekecek? x ile a hafızadaki aynı arraylist’i görüyorlar. x’e birşey eklemek aslında a’ya eklemekle aynı şey. Java da sınıf bazlı değişkenlerde (string hariç) bir metodun içine her zaman o metodun pointer benzeri bir bilgisi geçirilir. 

Şayet a değişkeni bir int olsaydı ne olacaktı. int sınıf bazlı bir değişken olmadığı için a’nın değeri değişmeyecekti. Neden? Çünkü; test(a) dediğimiz zaman, farz edelim ki a = 5, x = 5 olacaktı. Biz x üzerinde bir değişiklik yapsak bile x değişecekti, a aynı kalacaktı. Halbuki arraylist olunca arraylist’in sanki bir pointerını yollamış gibi olduk.

]]>