logo

Java ana() yöntemi

main() JVM'nin bir Java programını yürütmeye başlamasının başlangıç ​​noktasıdır. main() yöntemi olmadan JVM programı yürütmez. main() yönteminin sözdizimi şöyledir:

Java Ana Yöntemi

halk: Bir erişim belirtecidir. JVM'nin programın yürütme noktasını tanımlayabilmesi için main() yönteminden önce public bir anahtar kelime kullanmalıyız. Main() yönteminden önce özel, korumalı ve varsayılan kullanırsak, JVM tarafından görülmeyecektir.

statik: Statik anahtar sözcüğünü kullanarak bir yöntemi statik hale getirebilirsiniz. Bir nesne oluşturmadan main() yöntemini çağırmalıyız. Statik yöntemler, nesneleri oluşturmadan çağrılan yöntemlerdir, dolayısıyla main() yöntemini çağırmak için herhangi bir nesneye ihtiyacımız yoktur.

geçersiz: Java'da her yöntemin dönüş türü vardır. Void anahtar sözcüğü, derleyiciye main() yönteminin herhangi bir değer döndürmediğini bildirir.

ana(): JVM'de önceden tanımlanmış varsayılan bir imzadır. Bir programı satır satır yürütmek ve bu yöntemin tamamlanmasından sonra yürütmeyi sonlandırmak için JVM tarafından çağrılır. Ayrıca main() yöntemini de aşırı yükleyebiliriz.

Dize argümanları[]: main() yöntemi ayrıca kullanıcıdan bazı verileri de kabul eder. Dize dizisi adı verilen bir grup dizeyi kabul eder. Komut satırı argümanlarını dize değerleri biçiminde tutmak için kullanılır.

 main(String args[]) 

Burada agrs[] dizi adıdır ve String türündedir. Bu, bir grup dizeyi saklayabileceği anlamına gelir. Unutmayın, bu dizi aynı zamanda bir grup sayıyı da saklayabilir, ancak yalnızca dize biçimindedir. main() yöntemine iletilen değerlere argüman adı verilir. Bu argümanlar args[] dizisinde saklanır, bu nedenle genellikle args[] adı kullanılır.

Main() yöntemi String args[] olmadan yazılırsa ne olur?

JVM main() yöntemini tanımayacağından program derlenecek ancak çalışmayacaktır. JVM'nin her zaman parametre olarak dize tipi diziye sahip main() yöntemini aradığını unutmayın.

Yürütme Süreci

JVM önce statik bloğu çalıştırır, ardından statik yöntemleri çalıştırır ve ardından programın ihtiyaç duyduğu nesneyi oluşturur. Son olarak örnek yöntemlerini yürütür. JVM, statik bir bloğu en yüksek öncelik esasına göre yürütür. Bu, JVM'nin programda main() yöntemini aramadan önce ilk olarak statik bloğa gittiği anlamına gelir.

Örnek

 class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } } 

Çıktı:

 Static block Static method 

Programda mevcutsa, JVM'nin ilk önce statik bloğu çalıştırdığını gözlemliyoruz. Bundan sonra main() yöntemini arar. Main() metodu bulunamazsa hata verir.

Örnek

main() yöntemine sahip olmayan bir program, çalışma zamanında hata verir.

 class DemoStaticBlock { Static //static block { System.out.println('Static block'); } } 

Çıktı:

 Error: Main method not found in the class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application 

Bu nedenle main() yöntemi her zaman şu şekilde yazılmalıdır:

 public static void main(String args[]) 

Public ve static'in yerine şu şekilde yazabiliriz:

 static public void main(String args[]) 

Ayrıca String tipi dizi için farklı bir isim kullanabilir ve onu şu şekilde yazabiliriz:

 static public void main(String[] x) 

main() yöntemini yazmanın farklı yolları şunlardır:

 static public void main(String []x) static public void main(String...args) 

Dize...argümanlar: Yöntemin sıfır veya birden fazla bağımsız değişkeni kabul etmesine olanak tanır. String ve dizi arasında tam olarak üç nokta olmalıdır; aksi takdirde hata verir.

Örnek

Main() yöntemi olmayan ancak derlenen ve başarıyla çalışan bir program.

 abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } } 

Çıktı:

 Java 

main() yönteminin aşırı yüklenmesi

Ayrıca main() yöntemini de aşırı yükleyebiliriz. Sınıfta herhangi bir sayıda main() yöntemini tanımlayabiliriz, ancak yöntem imzasının farklı olması gerekir.

Örnek

 class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } } 

Çıktı:

reaksiyon tablosu
 main method invoked 6