class Harf {
   char c;
}
public class Pas {
   static void f(Harf h) {
   h.c = 'z';
}

public static void main(String[] args) {
   Harf x = new Harf();
   x.c = 'a';
   System.out.println("1: x.c: " + x.c);
   f(x);
   System.out.println("2: x.c: " + x.c);
   }
}
_____________________________________________________________________

public class IlkelPas {
   static double f(double a) {
   System.out.println(a + " gonderildi");
   a = 10;
   System.out.println("gonderilen parametrenin degeri 10'a” + “esitlendi");
   return a;
}
public static void main(String[] args) {
   double b = 5 ;
   f(b);
   System.out.println("b --> " + b);
   }
}

__________________________________________

Birinci örnekte referans alan "f" metodu Harf sınıfından oluşturulan x referansının c alanının değerini "z" olarak değiştirebiliyorken, ikinci örnekte ise yine "f" metoduna gönderilen double tipindeki "b" değişkeninin değeri neden "10" olmuyor?

soruldu: 24 Ara '14, 10:00

Orhun's gravatar image

Orhun
301101323
cevap kabul oranı: 50%


Burda farklılık primitive type ve reference type kullanım farklılığından kaynaklanıyor.

static void f(Harf h) metodunda Harf parametre tipi refence type olduğu için gönderilen nesne ile parametre olarak tanımlanan değişkenin bellek adresi aynı olur ve birinde yapılan değişiklik diğerinide etkiler.

static double f(double a) metodunda ise double tipinde olan a değişkenine göndermiş olduğun değer setlenmiş olur. Yani bellekle a değişkeninin adresi ayrıdır ,gönderdiğin değerin bellek adresi ayrıdır. f fonksiyonun içindeki değişiklik fonksiyona gönderilen değeri etkilemez.

Google da "reference type vs primitive type" gibi bir arama ile daha çok bilgiye ulaşabilirsin.

İyi çalışmalar

permanent link

cevaplandı: 24 Ara '14, 12:27

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

değiştirildi: 24 Ara '14, 12:28

Aynı zamanda yine Google da 'Java call by reference' konusunu araştırmanı öneririm.

permanent link

cevaplandı: 28 Ara '14, 11:40

Mert%20Sezgin's gravatar image

Mert Sezgin
1532
cevap kabul oranı: 25%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×6
×3

Soruldu: 24 Ara '14, 10:00

Görüntüleme: 597 kez

Son güncelleme: 28 Ara '14, 11:40

powered by BitNami OSQA