Methoden müssen immer in Klassen geschrieben werden. Du kannst also nicht eine Methode ausserhalb einer Klasse deklarieren. Du weisst ja vielleicht, das du aus jeder Klasse Objekte erzeugen kannst. Eine Klasse Person kann beliebig viele Objekte "Personen" aus dieser Klasse (Instanzen) heraus erzeugen. Eine static Methode wird jedoch nicht an die Personen weitergegeben, weshalb die Methode an der Klasse selbst hängt. Möchtest du zb. eine Methode, die das Alter der Person zurückgibt, dann darfst du sie nicht als static deklarieren, weil du ja möchtest, das jedes Objekt Person das Alter ausgeben kann. Jedes Objekt würde dann eine Methode void getAlter() besitzen, und nicht static void getAlter(), sonst gehört sie zur Klasse Person selbst!
Möchtest du nun ein ausführbares Programm schreiben so musst du zuerst eine Klasse definieren, die die Methode main(String[] args) enthält. Der Compiler erkennt dann in der Klasse die main-Methode und führt sie aus.
Static bedeutet wie bereits erwähnt, dass die Methode eine Klassenmethode darstellt und bei der Objekterzeugung aus einer Klasse heraus nicht instanziert wird. Würdest du zb. eine Klasse erzeugen die eine static Methode besitzt, und aus dieser Klasse Objekte erzeugen, so existiert die static Methode nicht in jedem Objekt, sondern nur einmal, bei der Klasse selbst.
Lässt du das static bei der Methode weg, so besitzt jedes weitere Objekt, das du aus der Klasse erzeugst, die Methode ebenfalls, da die Methode zum Objekt selbst gehört und keine Klassenmethode darstellt.
Beispiel :
[Java]
Main.java
public class Main() { // Erstelle eine Klasse mit dem Namen Main, die aus der gesamten Anwendung heraus sichtbar ist
public static void main(String[] args) {
System.out.println("Ich bin die Main-Methode. Ich werde stets als erste vom Compiler ausgeführt. Ich bin eine Klassenmethode");
beenden();
}
public static void beenden() {
System.out.println("Byebye");
System.exit(0);
}
[/Java]