logo

Java main() Method – public static void main(String[] args)

Javas main()-metod är utgångspunkten varifrån JVM startar körningen av ett Java-program. JVM kommer inte att exekvera koden om programmet saknar huvudmetoden. Därför är det en av de viktigaste metoderna för Java, och att ha en ordentlig förståelse för det är mycket viktigt.

Java-kompilatorn eller JVM letar efter huvudmetoden när den börjar köra ett Java-program. Signaturen för huvudmetoden måste vara på ett specifikt sätt för att JVM ska känna igen den metoden som dess ingångspunkt. Om vi ​​ändrar metodens signatur kompilerar programmet men körs inte.



Utförandet av Java-programmet, den java.exe kallas. Java.exe gör i sin tur Java Native Interface eller JNI-anrop, och de laddar JVM. Java.exe analyserar kommandoraden, genererar en ny String-array och anropar main()-metoden. Som standard är huvudtråden alltid en icke-demonstråd.

Syntax för main() Metod

Syntaxen för metoden main() skrivs alltid som:

vad är $home linux

Java main() Metodsyntax



Exempel

Det vanligaste för att definiera main()-metoden visas i exemplet nedan.

Java
// Java Program to demonstrate the // syntax of the main() function class techcodeview.com {  public static void main(String[] args)  {  System.out.println('I am a Geek');  } }>

Produktion
I am a Geek>

Varje ord i offentliga statiska tomrum huvud uttalandet har en betydelse i JVM som beskrivs nedan:

1. Offentligt

Det är en Åtkomstmodifierare , som anger varifrån och vem som kan komma åt metoden. Att göra main()-metoden offentlig gör den globalt tillgänglig. Den offentliggörs så att JVM kan anropa den utanför klassen eftersom den inte finns i den aktuella klassen.



Om huvudmetoden inte är offentlig är dens åtkomst begränsad.

Exempel:

Java
// Java Program to demonstrate the // use of any other access modifier // other than public class techcodeview.com {  private static void main(String[] args)  {  System.out.println('I am a Geek');  } }>


Produktion

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

2. Statisk

Det är en nyckelord det vill säga när det förknippas med en metod, vilket gör den till en klassrelaterad metod . De main() metoden är statisk så att JVM kan anropa den utan instansierar klassen . Detta sparar också onödigt slöseri med minne som skulle ha använts av objektet som endast deklarerats för att anropa main() metod av JVM.

Om du försöker köra Java-kod där main inte är statisk får du ett felmeddelande.

Exempel:

Java
// Java Program to demonstrate the // error occurred when we dont use the // static keyword in the main() method class techcodeview.com {  public void main(String[] args)  {  System.out.println('I am a Geek');  } }>


Produktion

stad i uas
Error: Main method is not static in class test, please define the main method as: public static void main(String[] args)>

3. Tomt

Det är en nyckelord och är van vid ange att en metod inte returnerar något . Som den main() metoden returnerar ingenting, dess returtyp är tomhet . Så snart som main() metoden avslutas, avslutas även Java-programmet. Därför är det ingen mening att återvända från main() metod eftersom JVM inte kan göra något med dess returvärde av den.

Om huvudmetoden inte är ogiltig kommer vi att få ett felmeddelande.

Exempel:

Java
// Java Program to demonstrate the // error occurred when we dont use the // void return type in the main() method class techcodeview.com {  public static int main(String[] args)  {  System.out.println('I am a Geek');  return 1;  } }>


Produktion

Error: Main method must return a value of type void in class Main, please define the main method as: public static void main(String[] args)>

4. huvud

Det är namnet på Java-huvudmetoden . Det är identifierare som JVM letar efter som startpunkten för Java-programmet . Det är inte ett nyckelord.

Om vi ​​ändrar namnet medan vi initierar huvudmetoden får vi ett felmeddelande.

Exempel:

Java
// Java Program to demonstrate the // error occurred when we name the // main() method as newmain. class techcodeview.com {  public static void newmain(String[] args)  {  System.out.println('I am a Geek');  } }>


Produktion

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

5. String[] args

Det lagrar Java-kommandoraden argument och är en rad olika typer java.lang.String klass. Här är namnet på String-arrayen args men det är inte fixat och användaren kan använda vilket namn som helst i stället för det.

Exempel: Exekveringsprocess för sträng[]

Java
// Java Program to demonstrate // the working of String[] args // in the main() method class techcodeview.com {  // Commamd-Line Code ->// javac techcodeview.com.java // java techcodeview.com 1 2 3 public static void main(String[] args) { for (String elem : args) System.out.println(elem);  } }>


Produktion

hur man skriver ut java
1 2 3>

Bortsett från den ovan nämnda signaturen för main, kan du använda public static void main(String args[]) eller public static void main(String… args) för att anropa huvudfunktionen i Java. Huvudmetoden anropas om dess formella parameter matchar den för en array av strängar.

Notera: Huvudmetoden är ackumulerande i Java

Överbelastning av main()-metoden i Java

Att överbelasta main()-metoden är möjligt i Java, vilket innebär att vi kan skapa valfritt antal main()-metoder i ett program.

För att överbelasta main()-metoden i Java måste vi skapa main()-metoden med olika parametrar.

Exempel:

Java
public class Main {  public static void main(String[] args) {  if (args.length == 0) {  System.out.println('Running main() with no arguments');  } else if (args.length == 1) {  try {  int value = Integer.parseInt(args[0]);  main(value);  } catch (NumberFormatException e) {  main(args[0]);  }  } else {  // Handle more arguments as needed  }  }  public static void main(int value) {  System.out.println('Running main() with integer argument: ' + value);  }  public static void main(String message) {  System.out.println('Running main() with string argument: ' + message);  } }>

Produktion:

Running main() with no arguments>

Slutsats

Java main()-metoden är startpunkten för ett Java-program. Det är huvudkroppen som exekveras av JVM, och utan main()-metoden kan inget Java-program köras utan den.

Läs mer: Java handledning

Java main()-metod – vanliga frågor

Kan huvudmetoden vara int? Om inte, varför?

Nej, Java-huvudmetod kan inte vara int. Det finns två huvudorsaker till det:

  1. JVM letar efter public static void main(String[] args) när du startar programkörningen eftersom det är standardsignaturen för inmatning. Att använda int-signatur skulle orsaka förvirring och kompatibilitetsproblem när programmet körs.
  2. Att ha ogiltig signatur betyder att huvudmetoden inte returnerar något, men att använda int-signatur innebär att huvudfunktionen måste returnera heltal, vilket inte är användbart för JVM.

Kan vi köra ett Java-program utan huvudmetoden?

Nej, From JDK7 huvudmetoden är obligatorisk. Kompilatorn kommer först att verifiera om main() finns eller inte. Om ditt program inte innehåller huvudmetoden får du ett felmeddelande som inte finns i klassen.

För att kontrollera mer om ämnet se Är huvudmetoden obligatorisk i Java? artikel.

Kan vi deklarera main()-metoden utan String[] args?

Ja, vi kan deklarera main()-metoden utan String[] args. Även om det kommer att generera ett felmeddelande om vi direkt försöker köra huvudmetoden i drivrutinsklassen som i exemplet nedan.

Nedan är den korrekta metoden för att skriva ett program utan String args[].

konvertera int till sträng java
Java
import java.io.*; import javafx.application.Application; abstract class GFG  extends javafx.application.Application {  // static block  static  {  System.out.println('Hello, world!');  System.exit(0);  } }>

Produktion

Hello, world!>

Varför är main void i Java?

Huvudmetoden fungerar som utgångspunkt för programexekvering i Java. JVM förväntar sig inte ett returvärde från huvudet eftersom det inte finns någon mekanism för att ta emot eller bearbeta ett sådant värde.