ÖNEMLİ : Kendim için aldığım notlar. Umarım size de bir faydası olur. Kullanılan her bir makale referans olarak eklenmiştir.

Main metodu nedir?

Java’da yazılan bir program mutlaka main adlı bir yöntemle başlar. Programı çalıştırdığınızda, main yönteminin hangi sınıfta olduğunu belirtirsiniz. main yöntemi aşağıdaki gibi özel bir deklerasyona sahip olmalıdır.

1
public static void main(String[] args)

main metodu, programı başlatan kod tarafından çağrılması gerektiğinden herkese açık(public) olmalıdır. Bir sonraki anahtar kelime static‘dir. Bu, main yönteminin sınıfın her özel örneğinde yaşamadığı, aksine sınıfın bütünü için sadece bir tane olduğu anlamına gelir. Yani sınıfa aittir anlamına gelmektedir. Bu kavramlar şayet kafanızı karıştırıyor ise aşağıdaki videoyu izlemenizi öneririm. Sonrasında ise void ifadesini görüyorsunuz. Bu metodun herhangi bir değer döndürmediği anlamına gelir.

Ardından, yöntem adı olan main‘i göreceksiniz. Java, bir programı çalıştırabilmek için bu ismi kullanmanızı şart koşar. Bunun dışında bir isim veremezsiniz. Bu sebepten ötürü programı ayağa kaldırmak için main ismini veriyoruz.

Bunun dışında bu metot bir de parametre olarak içine String bir dizi almıştır. Yani main isminin olması programı ayağa kaldırmak için yeterli değildir. Programı ayağa kaldırmak için Java’nın bizden beklediği bir metot deklerasyonu vardır. O da;

1
public static void main(String[] args)

şeklindedir.


Java Memory Management


Hazırladığım java eğitim videosunda, main metodunu da kapsayan bir örnek kod üzerinde, statik ve statik olmayan değişken ve metotların hafıza yönetim modelini ele aldım. Bu videoyu özellikle izlemenizi öneririm.

Konumuza geri dönecek olursak, main metot deklerasyonu;

  • Hem public olacak,
  • Hem static olacak,
  • Hem void dönecek,
  • Hem ismi main olacak,
  • Hem de String[] tipinde bir diziyi parametre olarak alacaktır.

Bu arada parametreleri normal metodlarda sıklıkla görüyoruz. Buradaki çalışma prensibi de onlardan farklı değildir. Buradaki parametre programa komut satırı argümanlarını sunar. Programı çalıştırdığınızda, bu diziye hangi string‘lerin geçirileceğini belirtebilirsiniz. Komut satırı argümanlarını main olarak kullanmak isterseniz, kodu yeniden derlemeden programın hangi dosyayı okuyabileceğini değiştirebilirsiniz.

Komut Satırı Argümanları(Command-Line Arguments)

Komut satırı argümanlarından biraz bahsetmek istiyorum. Bir Java uygulaması, komut satırından istediğiniz sayıda argüman girişini kabul edebilir. Bu, kullanıcının uygulama başlatıldığında yapılandırma bilgilerini belirlemesini sağlar. Dikkat ederseniz main yönteminin parametre değişkenleri, yani args‘ın veri tipi bir String dizisidir. Bu programın sadece string tipinde bir diziyi argüman olarak kabul edeceği anlamına gelmektedir.


java command-line arguments

Diyelim ki komut satırı argümanı olarak kullanmak istediğiniz bir şeyler olduğunu hayal edin. Aşağıdaki örnekte This is a sample text cümlesini komut satırı argümanı eklemek istiyorum. Aşağıdaki kodla bu cümleyi args parametresi olarak programımın içine dahil edebilirim. Sistem, zaten args parametresi yoksa, parametrenin olmadığını anlayıp sadece main metodunun içine odaklanır.

1
2
3
4
5
6
7
public class Sample {
    public static void main(String[] args) {
        for (String s: args) {
            System.out.println(s);
        }
    }
}


java command-line arguments

Görüleceği üzere komut satırı argümanlarını da kullanmak bir seçenektir.

Main metodundaki “statik” ne anlama geliyor?

Statik anahtar sözcüğü, bir yönteme veya üye değişkenine uygulandığında, uygulandığı yöntemin veya değişkenin artık sınıf için tanımlandığı, yani sınıftan türetilen her bir nesne için tanımlanmadığı anlamına gelir. Dolayısıyla main artık genel bir yöntemdir ve sınıfa aittir. Sınıfın bir nesnesini oluştururken çoğaltılamaz ve bunları main içinde “çağıran nesne” olmaz. Yani this anahtar sözcüğü kullanarak main metodu içinden bir şey çağıramazsınız.

Örnek yöntemlerini(instance methods) main‘den çağırmak istiyorsanız, nesneler oluşturmanız ve ardından bu nesneler üzerinde örnek yöntemlerini(instance methods) çağırmanız gerekir. Bununla birlikte, diğer statik yöntemleri doğrudan çağırabilirsiniz. static anahtar kelimesinin ne anlama geldiğini daha detaylı görmek isterseniz şu linkteki yazımı okuyabilirsiniz.

Üye değişkeni : İngilizce member variable veyahut instance variable olarak da tanımlanır. Yani sınıftan türetilen her bir nesnede olan özelliklerdir. Kısacası her bir nesne için özeldir. Sınıf değişkeni ise ingilizce class variable olarak tanımlanır. Fakat sınıf değişkeni sınıfa aittir ve tektir. Sınıftan türetilen her nesnede aynı değeri taşır.

Referanslar