Was ist die Bedeutung von Public static void main string args in Java?
Hallo,
Bin ein blutiger Anfänger. Viele sagen mir, dass das nur für den Start des Programmes da ist.
Ich will jedoch wissen, was genau jedes einzelne Wort davon bedeutet.
Also Public , static, void, (main) , String, args
Danke schon mal
Mfg
4 Antworten
Teile der genannten Begriffe in einer Kombination bilden nicht den Start eines Programmes, sondern den Start einer Methode, die fälschlicherweise auch oft "Funktion" genannt wird.
Du beginnst z.B. so eine Methode:
public void zeichne(){
....
}
Public heißt öffentlich. Der Zugriff ist also grundsätzlich erlaubt.
Void bedeutet einfach, dass die Methode keinen Rückgabewert liefert. Kommt also an jede Methode, die nicht irgendeinen Wert zurückgeben soll.
String ist ein Datentyp. Es gibt u.a. folgende Datentypen in Java:
- String = Zeichenkette
- int = Integer
- double
- boolean = logischer Wert (true / false)
Mehr dazu findest du z.B. hier:
https://de.wikibooks.org/wiki/Java_Standard:_Primitive_Datentypen
Du kannst aber auch so eine Methode starten:
public class ZeichenTest
{
public static void main(String[] args)
{
char buchstabe1 = 'A';
char buchstabe2 = 65;
buchstabe1 += 1;
System.out.println(buchstabe1);
System.out.println(buchstabe2);
}
}
Dieses Programm erzeugt die Ausgabe "B A". Addiert man zu einem Zeichen eine 1, dann ist damit das nächste Zeichen gemeint.
Mehr dazu findest du wie gesagt unter dem Link.
_______________________________________________________
Liebe Grüße
TechnikSpezi
Ganz ehrlich, die Antwort ist 5 Jahre alt, ich verstehe selbst nicht, wieso ich so ein "kompliziertes" Beispiel genutzt habe, obwohl es gar nicht darum geht, das zu verstehen. Die Antwort ist damit nicht falsch, die Ausgabe wäre in der Tat "B A", aber das hat hier überhaupt nichts verloren.
Kleine Korrektur noch:
Ich habe gerade z.T. Methode und Klasse zusammengemischt, weil es das in beiden Fällen gibt. Lass dich dadurch nicht verwirren. Es gibt sowohl private / öffentliche / geschützte Klassen als auch Methoden.
Eine Methode befindet sich immer in einer Klasse.
und noch ne frage :D : wenn Void einfach nur aussagt, dass kein Rückgabewert kommt (was auch immer das is xd) dann könnte man ja eine Methode auch so erstellen oder? : test(); oder eben public test();
wenn Void einfach nur aussagt, dass kein Rückgabewert kommt (was auch immer das is xd) dann könnte man ja eine Methode auch so erstellen oder? : test(); oder eben public test();
Das ist blöd zu erklären, weil du noch Anfänger bist.
Die Methode ist grundsätzlich öffentlich. Das heißt, auch andere Methoden und andere Programme haben grundsätzlich einen Zugriff auf die Methode. Sie können sie ausführen und Variablen abfragen etc.
Das geht nicht, wenn die Methode privat ist. Dann steht dort nicht
public void ...
sondern:
private void ..
Bei einer privaten Klasse hat nur eine Methode aus der Klasse selbst oder eine andere innere Klasse die Methode Zugriff auf diese Methode.
Unterklassen oder Klassen im selben Package haben aber keinen Zugriff mehr. Es gibt auch den Begriff "protected". Dabei haben dann auch Unterklassen und Klassen aus dem selben Package Zugriff, aber alle sonstigen nicht. Bei private eben keine außer die aus der eigenen Klasse.
Genauer kannst du das hier sehen:
https://de.wikibooks.org/wiki/Java_Standard:_Klassen
Schau dir die Tabelle unbedingt an. Dort siehst du das perfekt auf einen Blick.
Das ist aber alles noch etwas komplizierter. Nur, weil dort public steht, kannst du nicht automatisch immer darauf zugreifen. Das würde jetzt aber den Rahmen sprengen.
wenn Void einfach nur aussagt, dass kein Rückgabewert kommt (was auch immer das is xd) dann könnte man ja eine Methode auch so erstellen oder? : test(); oder eben public test();
Auch hier ist es nicht so einfach. Wenn dort nicht void steht, dann erwartet Java automatisch einen Rückgabewert. Demnach wird es auch nicht funktionieren, wenn du in der Methode dann die entsprechenden Bedingungen für eine Rückgabe nicht erfüllst. Gibst du also kein void an und Java will etwas zurück geben, schreibst aber nicht, was zurück gegeben werden soll und alles was dazu gehört, wird es einen Fehler geben.
Also entweder muss dort void stehen oder in der Methode selbst steht dann etwas von "return", also zurückgeben.
ok danke aber ich verstehe das mit public nicht: es heißt übersetzt öffentlich - aber WAS genau meint man mit " eine öffentliche Methode, wo jeder Zugriff hat" Ich verstehe nicht, was mit dem Zugriff gemeint ist
public static void main(String[] args){
...
}
public ist das Zugriffsrecht der Methode. Wie am Wort schon zu erkennen ist, ist die Methode öffentlich, kann also von überall aufgerufen werden.
static ist der sog. Modifizierer der Methode. Es besagt in dem Falle, dass die Methode statisch ist und dementsprechend auch aufgerufen werden kann, wenn noch kein Objekt der Klasse erzeugt wurde. Das ist bei so einer Methode besonders wichtig, weil dadurch ja erst das Java-Programm "in Schwung" kommt und davor noch praktisch keine Klasse existiert. Die main-Methode hängt also an keinem Objekt, sondern kann auch einfach so ohne Weiteres aufgerufen werden.
void ist der sog. Rückgabetyp der Methode. Dieser gibt an, was die Methode an den Aufrufer zurückgibt, das kann zum Beispiel ein Wert sein, das von der Methode berechnet wurde. void bedeutet so viel wie "nichts" und besagt ganz einfach, dass die Methode nichts zurückgibt (sondern vielleicht einfach nur andere Methoden ausführt).
main ist der Name der Methode. Syntaxtechnisch könnte dort auch jeder mögliche andere Name stehen - sollte aber nicht, da die Methode anderswo mit dem Namen aufgerufen wird. Prinzipiell wäre das aber möglich.
String[] args ist der Übergabeparameter der Methode. Wenn eine Methode aufgerufen wird, können ihr Werte übergeben werden, die anschließend von ihr verwertet werden (zum Beispiel könnte man einer Methode addition(...) zwei Zahlenwerte summand1 und summand2 übergeben, die von der Methode addiert werden). Dabei ist String[] der Datentyp und args der Name des Übergabeparameters. String[] ist ein Array (ein Speicher) von mehreren Strings, also Zeichenketten. Im Array String[] args sind also mehrere Zeichenketten zusammen gespeichert und werden in diesem Array praktisch als "Paket" übergeben.
Eine solche Struktur findest Du bei jeder Methode in Java, zuerst kommt das Zugriffsrecht (optional), dann der/die Modifizierer (optional), dann der Rückgabetyp (notwendig), dann der Name der Methode (notwendig) und anschließend in Klammern der/die Übergabeparameter (optional).
Weitere Zugriffsrechte wären private oder protected oder auch package-private, wenn gar kein Zugriffsrecht dabei steht.
Mögliche Modifizierer wären außer static noch final oder abstract.
Ein Rückgabetyp kann prinzipiell fast alles sein, Datentypen wie int, double, short, komplexe Datentypen wie Integer, Double, String oder auch erzeugte Objekte.
Selbiges gilt für den Übergabeparameter - Du kannst einer Methode fast alles übergeben.
LG Willibergi
public : Du kannst von jedem Ort im Programmcode auf die Funktion zugreifen
static: Die Methode ist statisch. Dh sie kann auch aufgerufen werden, ohne dass von der Klasse ein Objekt existiert. Muss sie ja auch, da du die Objekte erst in dieser Methode erstellst.
void: ein "leerer" Datentyp. Bei Methodenköpfen signalisiert er, dass die Methode keinen Rückgabewert hat
main ist einfach nur der Name und in dieser Kombination (also public static void main(String[] args)) ein Zeichen für den Compiler, dass das Programm hier starten soll.
String ist die Bezeichnung für den Typen, der in diesem Fall der Methode übergeben wird. String ist ein Array von Characters und repräsentiert Text (aber du kannst auch Zahlen in einen Text speichern oder beides mischen usw). Die Main-Methode bekommt aber ein String-ARRAY übergeben (String[])
args ist hierbei der Variablenname des String-Arrays - hiermit kannst du in der Methode darauf zugreifen.
Die korrekte Schreibweise ist:
public static void main(String[] args)
public = Die Methode ist öffentlich und in der Schnittstelle der Klasse sichtbar.
static = Die Methode ist statisch.Das bedeutet, dass sie, anders als non-static-Methoden (also "normale Methoden"^), an der Klasse selbst aufgerufen wird und nicht an Objekten der Klasse. Somit ist sie quasi "immer erreichbar". So eine Methode wird auch Klassenmethode genannt.
void = Die Methode liefert nichts zurück.
main = Name der Methode.
String[] args = Die Methode bekommt als Parameter ein Array von Strings. Im Block des Methodenrumpfes wird dieser als "args" referenziert (Abkürzung für Arguments).
Hallo, falls du noch mal antworten würdest:
Dein Public-Test verstehe ich nicht. Warum "buchstabe2 = 65? Was macht die 65? Und warum kommt da B heraus?? Bzw. A? "A+1" ist ja B, aber wie kommt mittels 65 das A zustande? Sowas verstehe ich immer nicht, daher fange ich nie an Programmieren zu lernen. Ich verstehe fast NIE was ich lese! :p