logo

Java main() -menetelmä

Main() on aloituspiste, jossa JVM aloittaa Java-ohjelman suorittamisen. Ilman main()-menetelmää JVM ei suorita ohjelmaa. Main()-metodin syntaksi on:

Java päämenetelmä

julkinen: Se on pääsyn määrittäjä. Meidän tulisi käyttää julkista avainsanaa ennen main()-metodia, jotta JVM voi tunnistaa ohjelman suorituspisteen. Jos käytämme yksityistä, suojattua ja oletusarvoa ennen main()-metodia, se ei näy JVM:lle.

staattinen: Voit tehdä menetelmästä staattisen käyttämällä avainsanaa staattinen. Meidän pitäisi kutsua main()-metodia luomatta objektia. Staattiset menetelmät ovat menetelmä, joka kutsuu luomatta objekteja, joten emme tarvitse mitään objektia main()-menetelmän kutsumiseen.

mitätön: Javassa jokaisella menetelmällä on palautustyyppi. Void-avainsana kuittaa kääntäjälle, että main()-metodi ei palauta arvoa.

pää(): Se on oletusallekirjoitus, joka on ennalta määritetty JVM:ssä. JVM kutsuu sitä suorittamaan ohjelman rivi riviltä ja lopettamaan suorituksen tämän menetelmän suorittamisen jälkeen. Voimme myös ylikuormittaa main()-menetelmää.

Merkkijonoargut[]: Main()-menetelmä hyväksyy myös joitakin tietoja käyttäjältä. Se hyväksyy merkkijonoryhmän, jota kutsutaan merkkijonotaulukoksi. Sitä käytetään pitämään komentorivin argumentit merkkijonoarvojen muodossa.

 main(String args[]) 

Tässä agrs[] on taulukon nimi, ja se on merkkijonotyyppiä. Se tarkoittaa, että se voi tallentaa merkkijonoryhmän. Muista, että tämä taulukko voi myös tallentaa numeroryhmän, mutta vain merkkijonon muodossa. Main()-metodille välitettyjä arvoja kutsutaan argumenteiksi. Nämä argumentit tallennetaan args[]-taulukkoon, joten sille käytetään yleensä nimeä args[].

Mitä tapahtuu, jos main()-metodi kirjoitetaan ilman String args[]?

Ohjelma kääntää, mutta ei suorita, koska JVM ei tunnista main()-menetelmää. Muista, että JVM etsii aina main()-metodia, jonka parametrina on merkkijonotyyppinen array.

Toteutusprosessi

Ensin JVM suorittaa staattisen lohkon, sitten staattiset menetelmät ja sitten se luo ohjelman tarvitseman objektin. Lopuksi se suorittaa ilmentymämenetelmät. JVM suorittaa staattisen lohkon korkeimman prioriteetin perusteella. Se tarkoittaa, että JVM siirtyy ensin staattiseen lohkoon ennen kuin se etsii main()-menetelmää ohjelmasta.

Esimerkki

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

Lähtö:

 Static block Static method 

Huomaamme, että JVM suorittaa ensin staattisen lohkon, jos se on ohjelmassa. Sen jälkeen se etsii main()-menetelmää. Jos main()-menetelmää ei löydy, se antaa virheen.

Esimerkki

Ohjelma, jossa ei ole main()-menetelmää, antaa virheen ajon aikana.

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

Lähtö:

 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 

Joten main()-metodi tulee aina kirjoittaa seuraavasti:

 public static void main(String args[]) 

Voimme vaihtaa julkista ja staattista ja kirjoittaa sen seuraavasti:

 static public void main(String args[]) 

Voimme myös käyttää eri nimeä String-tyyppiselle taulukolle ja kirjoittaa sen seuraavasti:

 static public void main(String[] x) 

Eri tapoja kirjoittaa main()-metodi ovat:

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

String...argumentit: Sen avulla menetelmä voi hyväksyä nollan tai useita argumentteja. Merkkijonon ja taulukon välissä tulee olla täsmälleen kolme pistettä; muuten se antaa virheen.

Esimerkki

Ohjelma, jolla ei ole main()-menetelmää, mutta joka käännetään ja toimii onnistuneesti.

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

Lähtö:

 Java 

Main()-menetelmän ylikuormitus

Voimme myös ylikuormittaa main()-metodia. Voimme määrittää luokassa minkä tahansa määrän main()-metodia, mutta menetelmän allekirjoituksen on oltava erilainen.

Esimerkki

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

Lähtö:

yhdistävä lajittelu
 main method invoked 6