Diğer programlama dillerinde fonksiyon olarak adlandırılan metotlar, Java programlama dilinde en önemli konulardan birisidir. Programlama dilleri içerisinde metotlar/fonksiyonlar temel yapı taşıdır.
Metot Nedir?
Metotlar, bir programın ayrılmış küçük parçacıkları olarak adlandırılır.
- Metotlar büyük bir programı küçük parçalara bölmemizi ve daha basit küçük parçalar halinde kod yazmamızı sağlar.
- Bir programda değişiklik yapılmak istenildiği zaman tüm program yerine ilgili metot üzerinde değişiklikler yaparak sorun daha basit bir şekilde çözülür.
Metotların genel yapısı şu şekildedir:
erisim_belirleyici, donus_tipi, metot_adi (parametreler-zorunlu değil)
{
islem1;
islem2;
...
...
}
Erişim Belirleyici = Adından da anlaşıldığı üzere metoda nasıl erişileceğini belirtilir. Yazmak zorunlu değildir. Nesne yönelimli kısımda detaylı olarak anlatılacaktır.
Dönüş Tipi = Eğer bir metot değer döndürecekse, dönecek değerin tipi belirtilir. (int,String,double vs.) Yani metodun geri döndüreceği değişkenin türü int ise metodun dönüş tipi de int olmalıdır.
Eğer metot herhangi bir değer döndürmeyecekse de dönüş tipi void olmalıdır. Bu değerler return deyimi ile döndürülür.
Parametreler = Parametreler metoda ana program tarafından gönderilen uygun veri tipindeki değerlerdir. Metot ana programdan gelen değerleri alarak işlemler yapar.
Bu bölümde metotları 2 başlık altında inceleyeceğiz.
Değer Döndürmeyen Metotlar
Bu tür metotlar ana program tarafından çalıştırılır fakat ana programa bir değer döndürmezler.
Bu metotlar herhangi bir değer döndürmediği için dönüş tipi olarak boş anlamına gelen void dönüş tipini kullanırlar.
Parametresiz
Değer döndürmeyen ve parametresiz metotlara örnek verelim.
Örneğin, ekrana sadece “KOD BLOKLARI” yazan metodun ne değer döndürmesine ne de parametre almasına gerek yoktur.
package kodbloklari.com;
public class metotlar1 {
static void merhaba() {
System.out.println("KOD BLOKLARI");
}
public static void main(String[] args) {
merhaba();
}
}
Yukarıda da bahsettiğim gibi metot herhangi bir değer döndürmediği için dönüş tipi void olmuştur.
Metot oluşturuldu ve ana program tarafından çağrılmaya hazır durumdadır.
Kodun ekran çıktısı şu şekildedir:

Değer döndürmeyen ve parametresiz metotlara bir örnek daha verelim.
Kullanıcıdan 2 sayı alıp toplamını ekrana yazdıran metot yazalım.
Örneğin bir programda defalarca bu işlemi yapmak yerine, bir metot yazıp bu işlemi yapmamız gerek yerlerde bu metodu kullanarak programı daha basit ve kısa hale getirebiliriz.
package kodbloklari.com;
import java.util.Scanner;
public class metotlar2 {
static void topla()
{
Scanner scan = new Scanner(System.in);
int sayi1,sayi2;
System.out.print("1.Sayıyı giriniz: ");
sayi1 = scan.nextInt();
System.out.print("2.Sayıyı giriniz: ");
sayi2 = scan.nextInt();
System.out.println("Toplam = " + (sayi1 + sayi2));
}
public static void main(String[] args) {
topla();
}
}
Bu metotta da ana programa herhangi bir değer döndürmediği için dönüş tipi void olmuştur. Ana programdan gönderilmesi gereken bir değer olmadığı için parametre kullanmadık.
Kodun ekran çıktısı aşağıdaki gibidir:

Değer döndürmeyen ve parametresiz metotlar en basit haliyle bu şekildedir.
Parametreli
Bazı durumlarda ana programdan metotlara, metotlarda kullanılmak üzere değer gönderilmesi gerekebilir. Bu değer gönderme işini metotlarda parametre yardımıyla yapıyoruz.
Örneğin , ana programdaki 2 sayının toplamını yazdırmak istediğimiz zaman bu işlemi ana programda yapmak yerine bir metot oluşturup toplanacak 2 sayıyı o metoda gönderebiliriz. Metotta bu sayıları toplayıp toplamını ekrana yazdırabilir.
package kodbloklari.com;
public class metotlar3 {
static void topla(int sayi1, int sayi2) {
System.out.println("Toplam = " + (sayi1 + sayi2));
}
public static void main(String[] args) {
topla(15,13);
}
}
Yukarıda bahsettiğim gibi, ana program tarafından metoda 15 ve 13 sayını gönderdik. Bu gönderilen değerler int veri tipinde olduğu için parametrelerin veri tipide int olmalıdır. Daha sonra metot bu sayıların toplamını ekrana yazdırdı. Yine herhangi bir değer döndürmediği için metodun dönüş tipi void oldu.
Eğer programın bir çok yerinde 2 sayının toplamını yazdırmanız gerekiyorsa, her sayı çifti için işlem yapmak yerine bir metot oluşturup kodu kısaltabilirsiniz.
Kodun ekran çıktısı da şu şekildedir:

Değer döndürmeyen metotlar genel itibarıyla bu şekildedir.
Değer Döndüren Metotlar
Değer döndüren metotlarda, metot tarafından üretilen değer return ifadesiyle ana program ya da çağrıda bulunan metoda döndürülür.
Yukarıda yaptığımız topla metodunda, metot değerleri ekrana yazdırıyordu. Bu sefer bu değeri döndürmesini isteyelim.
Programın kodu şu şekildedir:
package kodbloklari.com;
public class metotlar4 {
static int topla(int sayi1, int sayi2) {
int toplam;
toplam = sayi1 + sayi2;
return toplam;
}
public static void main(String[] args) {
int sonuc;
sonuc = topla(25,12);
System.out.println(sonuc);
}
}
Burada ana program topla metoduna iki sayı gönderdi ve topla metodu bu değerleri topladı ve ana programa döndürdü. Yani topla(25,12) yazdığımız zaman topla metodu bize 37 değerini verir. Biz de ana programda “sonuc” değişkenini eşitledik bu değeri.
Döndürdüğümüz değer int türünde olduğu için metodun dönüş tipide int oldu.
Kodun ekran çıktısı aşağıdaki şekildedir:

Şimdi de bölme işlemi yapan metot oluşturalım ve bu metotta döndürülen değer float veri tipinde olacağı için metodun dönüş tipide float olmalıdır.
package kodbloklari.com;
public class metotlar5 {
static float bol(float sayi1, float sayi2) {
float sonuc;
sonuc = sayi1 / sayi2;
return sonuc;
}
public static void main(String[] args) {
float bolum;
bolum = bol(10,3);
System.out.println("Bölme işleminin sonucu = " + bolum);
}
}
Dönüş tipimiz, ana programa döndürülecek veri tipinde aynı olmalıdır. Bu yüzden metodumuzun dönüş tipi float olmuştur.
Kodun ekran çıktısı aşağıdaki gibidir:

Bu örneklerde metotların mantığı ve ne için kullanıldığı tam olarak anlaşılamayabilir fakat programda daha karmaşık işler yapmamız gerektiği zaman metotlar daha anlaşılır hale gelmektedir.
Örneğin, sınıftaki 30 öğrencinin vize ve final notlarını alarak öğrencinin ortalamasını hesaplayıp dersten geçip geçmeyeceğini hesaplamamız gerektiği bir programda , her öğrenci için teker teker işlem yapacağımıza bir tane metot oluşturup, bu metot sayesinde programı oldukça kısaltabiliriz.
Şimdi de bu örneği programımızda çalıştıralım:
package kodbloklari.com;
import java.util.Scanner;
public class metotlar6 {
static void puanHesapla(double vize, double fınal) {
double ortalama;
ortalama = (vize * 0.4) + (fınal * 0.6);
System.out.println("Ortalamanız = " + ortalama);
if(ortalama > 60) {
System.out.println("Dersi geçtiniz.");
}
else if(ortalama > 50) {
System.out.println("Dersi sorumlu geçtiniz.");
}
else {
System.out.println("Dersten kaldınız.");
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double vize,fınal;
for(int i = 1; i < 6; i++)
{
System.out.print(i + ". Öğrencinin vize notunu giriniz: ");
vize = scan.nextDouble();
System.out.print(i + ". Öğrencinin final notunu giriniz: ");
fınal = scan.nextDouble();
puanHesapla(vize,fınal);
}
}
}
puanHesapla() metodumuz, ana program tarafından gönderilen iki sayıyı kullanarak öğrencinin ortalamasını buldu ve dersten geçip geçmediğini hesapladı.
Yukarıdaki örnekte 5 öğrenci için yaptım. For döngüsünün döngü sayısını arttırıp istediğimiz sayıda yapabilirsiniz.
Kodun ekran çıktısı şu şekildedir:

Metotları kullanarak çok fazla örnek yapabiliriz. Konuyu örnekler yaparak daha iyi kavramak için Java Dili Örnekleri sayfasını inceleyebilirsiniz.
4.809 Yorum