Java'da dönüş değerleri
twice adında bir metot yazın; int türünde n alsın ve o sayının iki katını geri göndersin. Başlık void değil, int ile başlar: static int twice(int n). Süslü parantezlerin içine return n * 2; yazın. main içinde çağrının sonucunu yazdırın: System.out.println(twice(7));. Ekranda tek satır görünmeli: 14. twice kendisi println çağırmaz. Yalnızca 14'ü geri verir. main o sayıyı yazdırır. Bu sayfanın öğrettiği şey işte bu geri vermedir.
main'e bir sayı geri verin
parameters sayfasında greet ve show gövdenin içinde yazdırıyordu. Çağrı bir değeri içeri gönderiyor, metot ekrana yazıyordu. Burada metot hâlâ bir değer alır, ama bir değeri de dışarı gönderir. return sözcüğü o çıkan değeri işaretler. main onu saklayabilir veya yazdırabilir.
Box.java adlı küçük bir program dosyası oluşturun. İlk satırdaki public class dosya adıyla aynı olmalı: public class Box. Bu dosyada eski bir Tip veya Chime sınıf adını bırakmayın; derleyici sınıf adıyla dosya adının uyuşmasını bekler.
main'in dışında, hâlâ sınıfın süslü parantezleri içinde şunu yazın:
static int twice(int n) {
return n * 2;
}
Başlık artık void demez. int der, çünkü geri gelen değer bir int'tir. Parantezler arasında int n hâlâ bir parametredir — önceki sayfadaki aynı fikir. Gövde tek bir deyim tutar: return n * 2;. Bu, n'yi 2 ile çarpar ve çarpımı twice'ı çağırana geri gönderir. Bu sayfada twice içinde System.out.println yoktur. Derlemeden önce dosyayı kaydedin.
twice ile Box.java
Bu, küçük programın tamamıdır. twice hesaplar. main yazdırır.
public class Box {
public static void main(String[] args) {
System.out.println(twice(7));
}
static int twice(int n) {
return n * 2;
}
}
Box.java'nın bulunduğu klasörden javac Box.java çalıştırın. Parantezler, süslü parantezler ve noktalı virgüller uyuşunca javac kendi satırını yazmaz. Sonra java Box çalıştırın — java Box.java değil. İkinci komuttan .java uzantısını çıkarın. Aynı iki komut Windows ve macOS'ta çalışır; bu sayfa iki sistem için ayrı bir kabuk yazımı istemez. Program bir satır yazdırıp durmalı: 14. Sizden yazı yazmanızı beklememelidir. Terminal klavye girişi bekliyorsa, dosyada eski bir alıştırmadan kalan nextLine çağrısı vardır. O çağrıyı silin; System.out.println(twice(7)); ile yukarıdaki twice metodunu tutun. Yanlış bir ekran satırı yeni bir JDK kurulumu gerektiği anlamına gelmez.
Bir çalıştırmayı sırayla izleyin. Java main'den başlar. twice(7) çağrısı 7'yi n'ye gönderir. twice içinde return n * 2; ifadesi 14'ü hesaplar ve o 14'ü main'e geri verir. Sonra println 14 yazar. twice kendi başına ekrana bir şey yazmadı. Çağrıyı twice(3) olarak değiştirirseniz ekran 6 göstermelidir. Metot gövdesi aynı kalır; yalnızca argüman değişir ve dönen çarpım onunla birlikte değişir. Ekran 14 yerine 7 gösteriyorsa, n'yi twice içinde yazdırmışsınızdır ya da main'de twice çağırmadan argümanı yazdırmışsınızdır — ikiye katlamayı return satırında tutun ve çağrının sonucunu yazdırın.
Dönen değeri yazdırmadan önce main içinde bir ada da koyabilirsiniz:
int result = twice(7);
System.out.println(result);
Bu da tek satır gösterir: 14. Önce çağrı biter ve result dolar. Sonra println result'ı yazar. Her iki biçim — çağrıyı doğrudan yazdırmak veya saklayıp sonra yazdırmak — twice içindeki aynı return'ü kullanır.
main'in aldığı değeri yazdırın
Ekranda farklı bir satır istiyorsanız yalnızca çağrıdaki sayıyı değiştirin. return n * 2; satırına dokunmayın. Her değişiklikten sonra yeniden derleyip çalıştırın: javac Box.java, sonra java Box. twice(0) 0 yazdırmalıdır. twice(10) 20 yazdırmalıdır. Her seferinde main, twice'ın geri verdiğini yazdırır.
twice başlığında hâlâ void varken gövdede return n * 2; varsa, javac bir hata yazar — void hiçbir şeyin geri gelmediği anlamına gelir, bu yüzden değerli bir return uymaz. Başlık int diyorsa ama gövdede return yoksa, javac yine hata yazar — bu başlangıç biçiminde bir int metodu her yolda bir int geri vermelidir. Gövde yazdırıyor ve hiç return yapmıyorsa Tip sayfasının fikrine dönmüşsünüzdür; bu sayfa sayının main'in elinde olmasını ister.
void ile tipli return
İki biçimi yan yana okuyun. void bir metot gövdesini çalıştırır ve biter. Tipli return'ü olan bir metot return ile bir değer geri vermelidir. Dönüş türü void değilse, main çağrıyı o değer olarak işler.
📊 void gövdesi ile return karşılaştırması
| Biçim | Metot ne yapar | main çoğu zaman ne yapar |
|---|---|---|
| void show(int n) | gövdenin içinde yazdırır | show(9); çağırır ve başka bir şey yazdırmayabilir |
| int twice(int n) | return n * 2; | twice(7) sonucunu yazdırır veya saklar |
Sık yapılan bir karışıklık, twice içine System.out.println(n * 2); koymak ve başlığı return olmadan int bırakmaktır. O zaman javac şikayet eder ya da başlığı yeniden void yaparsınız ve main'in çağrıdan yazdıracak bir değeri kalmaz. Başka bir karışıklık, başlık int derken değersiz return; yazmaktır. return n * 2; tutun ki dönen ifadenin türü int ile uyuşsun. main'de System.out.println("twice"); yazmak twice sözcüğünü yazdırır; metodu çağırmaz. Ekranda 14 istiyorsanız println(twice(7)) tutun.
Tip sayfasından kalan ve metot içinde yalnızca hi lena yazdıran bir greet demosu aynı dosyada kalıp ekranı karıştırabilir. main'i twice kullanan println'e indirgeyin ve tek bir dönüş yapan metot tutun. twice'ı main'in süslü parantezlerinin içine gömmeyin. Metotlar sınıfın içinde, main'in yanında durur. twice'ın süslü parantezlerini sınıf bitmeden kapatın.
overloading'den önce
static int twice(int n) yazabilir, hesaplanan bir değeri döndürebilir ve o değeri main'den yazdırabilirsiniz. Ekran, main'in aldığı sayıyı gösterir; metodun kendi yazdırdığı bir satırı değil. Geri bir değer gerektiğinde void yanlış başlıktır. Sonraki sayfa overloading'dir; orada parametre listeleri farklıysa birden fazla metot aynı adı paylaşabilir.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek