Bilmek istediğin her şeye ulaş

Java'daki 'void' nedir ve ne işe yarar? Return metotlarında return etmek, döndürmekten kasıt nedir?

C# bilgimle çok basit bir örnek üzerinden açıklamaya çalışayım. Varsayalım benim öyle bir fonksiyona ihtiyacım var ki bana belirteceğim 3 tam sayının ortalamasını double cinsinden versin. Bu fonksiyonu şöyle yazarım:

public double average (int a, int b, int c) {
double ort;
ort = (a+b+c) /3;
return ort;
}

Burada double kelimesi fonksiyonun ne tür veri döneceğini, return kelimesi ise dönülecek veriyi gösterir. Tabii ki bunların türü birbiriyle aynı olmalıdır. Yoksa hata verir.

Void kelimesi ise fonksiyonun herhangi bir veri geri döndürmeyeceğini gösterir. Örneğin benim, sayfamdaki belirli kontrolleri arada güncellemem gerekiyorsa public void UpdateControl() {} diye bir method tanımlayıp gerektiğinde kontrollerimi güncelleyebilirim.

Not: Ortalama fonksiyonuna pek ihtiyaç duyulmaz genelde Math vb. sınıfların içinde tanımlıdır ama basit örnek olsun diye yazdım.

Not: Aynı anda herkes cevap verince aynı cevaplar olmuş. Bilsem yazmazdım. Kolay soru gören dayanmış cevaba :)
  • Paylaş
Java ve diğer C tabanlı dillerde (C, C++, C#) void döndürmek aslında bir değer döndürmemek anlamına gelir.

void metot() {
//Bir seyler yap
}

Yukarıdaki metot aşağıdaki gibi çağrılabilir:

metot();

Bu durumda metot içindeki yapılan şeyler çalıştırılacak fakat hiç bir sonuç dışarıya döndürme yoluyla verilmeyecektir.

int topla(int a, int b) {
        return a + b;
}

Yukaridaki metot ise a ve b tam sayılarını toplayıp, toplamı geri döner. Bu metot aşağıdaki gibi çağrılabilir:

int sonuc = topla(3, 4);
System.out.println("Sonuc = " + sonuc);

Bu kod parçası beklendiği üzere 3 ve 4 sayılarını toplar ve topla metodundan dönülen sonucu sonuc değişkenine atar. Artık aşağıdaki yazdırma metodu çağrıldığında konsola,

Sonuc = 7

yazılacaktır.

Kısacası her bir metot bir girdi alan ve çıktı üreten süreç olarak düşünülürse, eğer bir çıktı yoksa bu süreç void türünden çıktı üretir (yani bu çıktı üretmez demenin Javacası). Eğer bir sonuç üretirse o tür adıyla döner. Bu ikinci örnekteki int yani tam sayıya denk geliyor.

Daha yüksek seviyeli bir açıklama dinlemek istersen beni takip edebilirsin.
  • Paylaş
Void, değer döndürmeyen metod ları tanımlarken kullanılır. Metodun gövdesinde istediğiniz her şeyi uygulayabilirsiniz. Metodu çağırdığınızda metodun içinde neler yazılmışsa uygular.
örneğin;

public void metod1( ) 
{
int sayi = 1+1;
}

eğer değer döndüren bir metod kullanacaksanız Void i yazamazsınız. Metodun gövdesinde herşeyi uygulayabilirsiniz ama bir değer göndermek zorundasınız. Metodu çağırdığınızda metodun içindeki talimatlar uygulanır ve bire değer döndürür bu değeri, bir değişkene, özelliğe atarsınız ve ya bazı hesaplamalarda kullanabilirsiniz vb.
örneğin;

public int metod1( ){int sayi = 1+1;return sayi;}
public void metod2( ){int deger = metod1( ) ;}
  • Paylaş
Bu konuyu tam anlayabilmek için fonksiyon ve prosedür arasındaki farkı bilmek gerekir.

Basitçe;
Prosedür (Procedure) : Bir takım işlemler yapan ancak değer döndürmeyen alt yordamı kasteder
Fonksiyon (Function) : Yine bir takım işlemler yapan ancak bir değer döndüren alt yordamları ifade eder.

C orta düzeyli bir dil olduğu için, çoğu dilde bulunan fonksiyon prosedür ayrımı ihmal edilmiştir. C dilinde bütün fonksiyon ve prosedürlerin kalıbı aynıdır. Ancak değer döndürmeyen bir fonksiyon tanımlayacağın zaman fonksiyonun döndürdüğü değer tipini belirlen tip cast yerine "void" ifadesini kullanırsın. Eğer tanımladığı bir fonksiyonsa, yani değer döndüren bir alt yordam ise o zaman da fonksiyonun döndüreceği değeri işlem sonunda "return" ifadesi ile yüklersin.

Yani:

void prosedur_1() {
//Bu bir prosedürdür. Burada işlemler yapılır ama sonuçta
// döndürülebilen bir değer oluşmaz.
}int fonksiyon_1() {
//Bu bir fonksiyondur. Burada bir işlem yapılır ve bir değer döndürülür
int dondurulecek_deger=10;
return dondurulecek_deger;
}

gibi.
Halbuki pascal/delphi, basic gibi sözdizimleri (syntax leri) kuralcı dillerde ise bu ayrım vardır :

Function fonksiyonum(param1: integer) : ingeter;
beginvarDondurulecek_Sonuc : Integer;
Dondurulecek_Sonuc : =10;
fonksiyonum : = Dondurulecek_Sonuc;
end;
Procedure presedurum(param1: integer) ;
begin...end;

yukarıda görebileceğin gibi, bu dillerde "return" gibi genel bir ifade kullanmazsın, alt yordamın tipini (fonksiyon mu yoksa prosedür mü olduğunu) baştan belirttiğin için değer döndürmek için doğrudan yordamın kendi adını kullanırsın.
  • Paylaş
Ben Java kullanmadım ama C dilinde döndürmek, yani return etmek fonksiyonun herhangi bir yerinde return komutuyla fonksiyondan çıkmak ve o değeri çıktı olarak vermek demek. Void fonksiyonlar herhangi bir değer döndürmez. Bu çıktı değeri; fonksiyonun kullanıldığı yerlerde, fonksiyondan bir değer çıktısı almak veya fonksiyonun yaptığı işin sonucuyla ilgili bilgi almak için kullanılır.
  • Paylaş
Sonraki Soru
HESAP OLUŞTUR

İstatistikler

210 Görüntülenme5 Takipçi5 Yanıt