Metoden main() finns i början och slutet av varje program i Java. Endast satser som ligger inom dess räckvidd beaktas under körningen. Det är därför det är så viktigt att vara upp­märk­sam på varje liten detalj i metodens syntax. Om den är felaktig kommer pro­gram­met inte att köras.

Vad är main() -metoden i Java?

1

Vad är syntaxen för Java-metoden main()?

Syntaxen för Java main() -metoden är alltid densamma. Den består av flera viktiga delar och ser ut så här:

public static void main(String[] args)
java

Dessa kom­po­nen­ter har följande funk­tio­ner:

  • public: Denna komponent sä­ker­stäl­ler att en klass också kan nås från utsidan.
  • static: Denna del de­kla­re­rar metoden som statisk, vilket innebär att den kan existera utan att ett objekt av en specifik klass har skapats i förväg.
  • void: Detta sä­ker­stäl­ler att metoden main() i Java inte behöver returnera ett värde. main: Detta är vad Java Virtual Machine använder för att iden­ti­fi­e­ra metoden när den kör ett program.
  • String[] args: Detta är en array där kom­man­do­radsar­gu­men­ten lagras och tas emot.

Varför är de enskilda kom­po­nen­ter­na i main() viktiga?

För att bättre förstå hur main() fungerar och varför alla kom­po­nen­ter är så viktiga, kommer vi att titta på dem var för sig i följande avsnitt. Viktigast av allt är att vi kommer att visa vad som händer om en del av sig­na­tu­ren saknas. För att göra detta väljer vi ett mycket enkelt ko­dex­em­pel, som vi kommer att skriva ut med Java-kommandot System.out.println.

public class main {
	public static void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

När du kör den här koden får du följande resultat:

Here is your sample text.
java

public

public fungerar som en åt­komst­spe­ci­fi­ka­tor och sig­na­le­rar till Java Virtual Machine var mot­sva­ran­de program ska köras. Det finns andra åt­komst­mo­di­fi­e­ra­re, såsom default, private och protected. Om du använder dessa med metoden main() i Java får du dock ett fel­med­de­lan­de:

public class main {
	private static void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Mot­sva­ran­de fråga är:

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
java

Det här fel­med­de­lan­det indikerar att det inte finns någon allmän åtkomst till metoden.

static

Nyc­kelor­det static bekräftar att metoden som används är statisk. Det betyder att den kan användas oberoende av klass­in­stan­ser. Om du tar bort denna komponent kommer koden att se ut så här:

public class main {
	public void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Här får du också ett fel­med­de­lan­de:

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

void

void är ett nyckelord som anger att metoden main() i Java inte ska returnera några värden. Eftersom main() är start- och slut­punk­ten för ett program i Java är rendering onödigt. Så här ser koden ut utan void:

public class main {
	public static main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Detta är fel­med­de­lan­det som visas om du utelämnar void:

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)
java

main

För varje program i Java söker JVM först efter iden­ti­fi­e­ra­ren main. Denna anger var ex­e­kve­ring­en ska börja och sluta. Så snart metoden main() i Java har slutfört sin ex­e­kve­ring avslutas pro­gram­met. Det är därför sig­na­tu­ren aldrig får ändras eller kom­plet­te­ras. Här är ett exempel på hur en ändring av sig­na­tu­ren ser ut:

public class main {
	public static void replacementMain(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Eftersom JVM inte kan hitta iden­ti­fi­e­ra­ren kommer den att avsluta pro­gram­met direkt och visa följande fel­med­de­lan­de:

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
java

String[] args

Arrayen String[] args motsvarar klassen java.lang.String och in­ne­hål­ler data som den lagrar som sträng­vär­den. Om du utelämnar denna spe­ci­fi­ka­tion kommer koden att se ut så här:

public class main {
	public static void main() {
		System.out.println("Here is your sample text.");
	}
}
java

Utan ar­gu­men­tet kan Java main() -metoden inte köras. Som ett resultat får du följande fel­med­de­lan­de igen:

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
java

Vilka al­ter­na­ti­va stav­ning­ar finns det?

Ko­dex­emp­let som visas här är skrivet enligt den van­li­gas­te syntaxen. Du kan dock enkelt anpassa det för att få en bättre översikt. Du kan till exempel placera hak­pa­ren­te­ser­na direkt efter args. Så här skulle det se ut:

public static void main(String args[]) { }
java

Du kan också lagra argument som variabla argument (varargs). För att göra detta måste du använda tre punkter:

public static void main(String...args) { }
java
Gå till huvudmeny