logo

Java main() metódus

A main() a JVM kiindulópontja egy Java program végrehajtásának megkezdéséhez. A main() metódus nélkül a JVM nem hajtja végre a programot. A main() metódus szintaxisa a következő:

Java fő módszer

nyilvános: Ez egy hozzáférési specifikáció. Nyilvános kulcsszót kell használnunk a main() metódus előtt, hogy a JVM azonosítani tudja a program végrehajtási pontját. Ha a main() metódus előtt privát, védett és alapértelmezettet használunk, az nem lesz látható a JVM számára.

statikus: A static kulcsszó használatával statikussá tehet egy metódust. A main() metódust objektum létrehozása nélkül kell meghívnunk. A statikus metódusok azok a metódusok, amelyek az objektumok létrehozása nélkül hívnak meg, így nincs szükségünk objektumra a main() metódus meghívásához.

üres: Java-ban minden metódusnak van visszatérési típusa. A Void kulcsszó nyugtázza a fordítónak, hogy a main() metódus nem ad vissza értéket.

fő(): Ez egy alapértelmezett aláírás, amely előre meghatározott a JVM-ben. A JVM meghívja, hogy soronként hajtson végre egy programot, és a metódus befejezése után fejezze be a végrehajtást. A main() metódust is túlterhelhetjük.

String args[]: A main() metódus is elfogad néhány adatot a felhasználótól. Elfogadja a karakterláncok egy csoportját, amelyet string tömbnek neveznek. A parancssori argumentumok karakterlánc-értékek formájában történő tárolására szolgál.

 main(String args[]) 

Itt az agrs[] a tömb neve, és String típusú. Ez azt jelenti, hogy képes egy karakterlánc-csoport tárolására. Ne feledje, hogy ez a tömb számok csoportját is tárolhatja, de csak karakterlánc formájában. A main() metódusnak átadott értékeket argumentumoknak nevezzük. Ezeket az argumentumokat args[] tömbben tárolják, ezért általában az args[] nevet használják rá.

Mi történik, ha a main() metódust String args[] nélkül írjuk?

A program lefordítja, de nem fut, mert a JVM nem ismeri fel a main() metódust. Ne feledje, hogy a JVM mindig a main() metódust keresi, paraméterként egy karakterlánc típusú tömböt.

Végrehajtási folyamat

A JVM először a statikus blokkot hajtja végre, majd statikus metódusokat hajt végre, majd létrehozza a program számára szükséges objektumot. Végül végrehajtja a példánymetódusokat. A JVM statikus blokkot hajt végre a legmagasabb prioritás alapján. Ez azt jelenti, hogy a JVM először statikus blokkra megy, még mielőtt a main() metódust keresné a programban.

Példa

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

Kimenet:

 Static block Static method 

Megfigyeljük, hogy a JVM először a statikus blokkot hajtja végre, ha az jelen van a programban. Ezután megkeresi a main() metódust. Ha a main() metódus nem található, hibát jelez.

Példa

A main() metódussal nem rendelkező program futás közben hibát ad.

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

Kimenet:

 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 

Tehát a main() metódust mindig így kell írni:

 public static void main(String args[]) 

Felcserélhetjük a nyilvános és statikus adatokat, és a következőképpen írhatjuk fel:

 static public void main(String args[]) 

Más nevet is használhatunk a String típusú tömbhöz, és így írhatjuk:

 static public void main(String[] x) 

A main() metódus írásának különböző módjai a következők:

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

String...args: Lehetővé teszi, hogy a metódus nulla vagy több argumentumot fogadjon el. Pontosan három pontnak kell lennie a String és a tömb között; ellenkező esetben hibát ad.

Példa

Olyan program, amelynek nincs main() metódusa, de lefordítható és sikeresen fut.

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

Kimenet:

 Java 

A main() metódus túlterhelése

A main() metódust is túlterhelhetjük. Az osztályban tetszőleges számú main() metódust definiálhatunk, de a metódus aláírásának eltérőnek kell lennie.

Példa

 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); } } 

Kimenet:

java listák
 main method invoked 6