Was genau bedeutet "public static void main(String[] ar

Status
Nicht offen für weitere Antworten.

pixel

Mitglied
Hallo zusammen,

ich bin neu im Java-Land und beschäftige mich erst seit ein paar Tagen mit dem Thema. Ich habe bereits einige Beispiele durch gearbeitet und habe eine ganz allg. Frage die ich am besten anhand eines Beispiels stelle:
Code:
package test1;
public class Test1 {
	public static void main(String[] args) {
			short s1 = 2, s2 = 3, s3;
			s3 = (short) (s1 + s2);
			System.out.println("Ergebniss = : " + s3);
	}
}

Das package lasse ich zunächst einmal außer acht da ich denke das dies erst später behandelt wird. Ich habe gelesen das ein package vergleichbar mit dem Namespace in C ist aber wie gesagt das ignoriere ich vorerst einmal. Mich interessiert besonders die Zeile:

public static void main(String[] args)

sie wird in den Büchern immer benutzt aber, zumindest am Anfang, nicht erklärt. Kann mir jemand helfen dieses Zeile in ihre Einzelteile zu zerlegen? Was leite ich damit ein und was ist in diesem Beispiel 'main' ?

Der Grund warum ich das Frage ist ganz einfach. Ich lese gerade "Java ist auch eine Insel" und bin gerade bei: "lokale Variabeln, Blöcke und Sichtbarkeit" angelangt. Im Buch ist folgendes Beispiel:
Code:
void foo()
{
   int i;
   {
      int j;                    // j gilt nur in dem Block
      j = 1;
   }
//    j = 2;                  // Funktioniert auskommentiert nicht
}

void bar()
{
   int i, k;                   // i hat mit dem oberen i nichts zu tun
  {
//    int k;                  // Das würde nicht gehen!
   }
}
aufgeführt. Nun versuche ich das auf mein Beispiel (oben) anzuwenden. Im Beispiel aus dem Buch werden die Blöcke mit "void foo()" und "void bar()" eingeleitet was bei mir eben "public static void main(String[] args)" ist.

Also habe ich versucht mein Beispiel wie folgt zu erweitern:
Code:
package test1;

public class Test1 {
	public static void main(String[] args) {
			short s1 = 2, s2 = 3, s3;
			s3 = (short) (s1 + s2);
			System.out.println("Ergebniss 1 = : " + s3);
	}
	public static void main2(String[] args) {
		short s1 = 2, s2 = 3, s3;
		s3 = (short) (s1 + s2);
		System.out.println("Ergebniss 2 = : " + s3);
	}
	
}
Was in der IDE (Eclipse) keinen Fehler ergibt. Allerdings wird beim Ausführen nur der erste Block ausgeführt und als Ergebnis:
Ergebniss 1 = : 5
geliefert.
Wäre euch wirklich dankbar wenn ihr mir helfen könntet diese Zeile zu zerlegen. Da sehr viele Java-Programme diese Zeile enthalten hat sich eine Google- oder Board- Suche entsprechend schwierig gestaltet. Im FAQ-Bereich habe ich jedenfalls nichts gefunden.

Viele Grüße
pixel
 

mic_checker

Top Contributor
Guck mal in Java ist auch eine Insel -> 3.7

Die main()-Funktion ist für alle Klassen und in der JVM zugänglich (public) und auf jeden Fall statisch (static) zu deklarieren. Die Methode muss statisch sein, da auch ohne Exemplar der Klasse ein Funktionsaufruf möglich sein soll. Als Parameter wird ein Array von String-Objekten angenommen. In diesem sind die auf der Kommandozeile übergebenen Parameter gespeichert.
 

pixel

Mitglied
ok, dann verstehe ich das so das die Zeile:

public static void main(String[] args)

sozusagen der Einstiegspunkt in's Programm ist. Dann muß ich meine Frage etwas ändern denn im Beispiel benutzt der Buchautor:
Code:
void foo()
{
...
...
}

void bar()
{
...
...
}

Was leite ich mit diesem void ... ein?

Viele Grüße
pixel
 

babuschka

Top Contributor
public static void main(String[] args)
Das ist überall sichtbare Methode names main, die keinen Rückgabewert void besitzt.
Da das der Einstiegspunkt ist, wird mit (String[] args) der Einstiegsmethode der String (hier zusätzlich ein Array) args übergeben. args sind dann praktisch die Kommandozeilenparameter. Bei dem DOS-Befehl "dir -p -l" würde args[0]="p" und args[1]="l" sein.

void foo() und void bar() sind Methoden, die keinen rückgabewert besitzen und denen nichts übergeben wird. Also du rufst die auf, und es wird das abgearbeitet, was drin steht.


Korrigiert mich, falls ich etwas falsch erklärt habe :)
 

Scotty

Aktives Mitglied
das sind ganz normale methoden, die du verwenden kannst, um irgendwas zu machen. :wink:
die methoden sind dafür da, dass dein programm besser gegliedert wird und du bestimmte algorithmen wiederverwenden kannst. in der main läuft dann alles zusammen. das ist sozusagen das kernstück deines programms. hier steht, was das programm machen soll.

beispiel:
Code:
int addiere(int x,int y)
{
    return x+y;
}

void out(int x)
{
    System.out.println(x);
}

public static void main(String args[])
{
    int x=addiere(2,5);
    out(x);
}
 
B

bygones

Gast
so sehr ich den Einsatz de Leute hier zu schätzen weiß und auch dass es sich hier um ein Anfängerforum handelt - aber bitte (!) lese dir Bücher durch (wie z.b. die Insel oder das JavaBuch oder Good Old Handbooks) - solche Fragen sind elementare Anfangsfragen die in jedem, wirklich in jedem Buch geklärt werden.

Ich finde man kann bei Fragen gerne helfen und bei Missverstädnissen, aber ein bisschen Grundlagen - Eigenforschung sollte schon kommen......

Scotty hat gesagt.:
in der main läuft dann alles zusammen. das ist sozusagen das kernstück deines programms. hier steht, was das programm machen soll.
die Aussage so an sich ist nicht richtig... es klingt als wäre die Main Methode die Steuerzentrale des Programms - sie ist einfach der Startpunkt mehr nicht !!
 

pixel

Mitglied
so sehr ich den Einsatz de Leute hier zu schätzen weiß und auch dass es sich hier um ein Anfängerforum handelt - aber bitte (!) lese dir Bücher durch (wie z.b. die Insel oder das JavaBuch oder Good Old Handbooks) - solche Fragen sind elementare Anfangsfragen die in jedem, wirklich in jedem Buch geklärt werden.

Ich finde man kann bei Fragen gerne helfen und bei Missverstädnissen, aber ein bisschen Grundlagen - Eigenforschung sollte schon kommen......

Ich glaube ich hatte erwähnt das diese Frage beim lesen des Buches, welches du ja ansprichst, aufgetaucht ist. Mag sein das es im Buch irgendwann erklärt wird jedenfalls nicht innerhalb der ersten zwei Kapitel und wenn der Autor dann solche Beispiele macht (siehe oben) dann halte ich es für wichtig es auch in einem Beispiel umzusetzen und dazu wiederum sollte ich es, zumindest ansatzweise, verstehen.

Ich nehme jetzt einfach mal an das du den Thread nur überflogen hast :wink:

Viele Grüße
pixel
 
G

Guest

Gast
Scotty hat gesagt.:
Code:
int addiere(int x,int y)
{
    return x+y;
}

void out(int x)
{
    System.out.println(x);
}

public static void main(String args[])
{
    int x=addiere(2,5);
    out(x);
}

Dieses Beispiel ist falsch! Die Methoden müssen statisch sein, oder es muss noch eine Instanz der Klasse erzeugt werden!
 

mic_checker

Top Contributor
pixel hat gesagt.:
Ich glaube ich hatte erwähnt das diese Frage beim lesen des Buches, welches du ja ansprichst, aufgetaucht ist. Mag sein das es im Buch irgendwann erklärt wird jedenfalls nicht innerhalb der ersten zwei Kapitel und wenn der Autor dann solche Beispiele macht (siehe oben) dann halte ich es für wichtig es auch in einem Beispiel umzusetzen und dazu wiederum sollte ich es, zumindest ansatzweise, verstehen.

Nur ist es so: Sagen wir der Autor postet ein kleines Beispiel, z.B. HelloWorld.java, dort siehst du dann erstmals die main in der oben genannten Form. Soll der Autor etwa direkt erklären was das alles bedeutet und so den unerfahrenen Leser nur noch mehr verunsichern ? In den meisten Büchern die ich bisher gesehen hab wird es so gehalten, dass kurz auf die Bedeutung von main eingegangen wird wenn die einzelnen Modifier etc. besprochen werden, bzw. wenn man verstehen kann was static etc. ist...

Denke mal die Frage hat sich jetzt ja aber geklärt ....oder?
 
G

Guest

Gast
Denke mal die Frage hat sich jetzt ja aber geklärt ....oder?

Soweit schon. Ich weiß (zumindest mal grob) was main() macht und was void bedeutet. Was public und static bedeutet habe ich nachgelesen. Somit habe ich zumindest mal einen groben Überblück und kann weiter machen.

Mir ist zwar noch nicht klar wie ich mehere Methoden in einem Java-File benutze aber ich denke das kommt einfach später. Ich werde jetzt erst mal die Schleifen-Konstrukte in meinem Kopf verankern.

Vielen Dank ich werd euch sicher noch brauchen.
 

Illuvatar

Top Contributor
Da wird später noch die OOP kommen dann wirst du das alles verstehen. Aber erstmal ist das egal, und es isxt wichtig dass du die Grudlagen wie Variablen und Operatoren und so lernst.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
A Was bedeutet folgende Programmcodezeile genau Java Basics - Anfänger-Themen 6
P Was genau bedeutet Feld Java Basics - Anfänger-Themen 3
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
jhCDtGVjcZGcfzug Was genau ist mit diesem Quellcode gemeint? Java Basics - Anfänger-Themen 5
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
S Was bewirkt ganz genau throw hinter einem Funktionsnamen? Java Basics - Anfänger-Themen 14
B Webhooks - was genau ist das und was kann damit JAVA Java Basics - Anfänger-Themen 5
B OCR - Rechnungserkennung, wie geht das genau? Java Basics - Anfänger-Themen 59
L Was genau macht -> Java Basics - Anfänger-Themen 18
Dawinartor Erste Schritte Was genau steckt dahinter? Java Basics - Anfänger-Themen 7
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
A Was genau ist ein Standardkonstruktor Java Basics - Anfänger-Themen 10
B Wie funktionieren diese Methoden in diesem Sortierverfahren genau? Java Basics - Anfänger-Themen 2
B Für gesamte Schleife genau X Sekunden benötigen Java Basics - Anfänger-Themen 1
J TabelView - Kann mir jemand die Sequenz genau erklären ? Java Basics - Anfänger-Themen 2
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
G Methoden Was genau macht die Methode light.setInfluencingBounds ? Java Basics - Anfänger-Themen 5
H Wer genau ist 'Er'? Java Basics - Anfänger-Themen 4
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
B Was genau ist getClass().getRessouce() Java Basics - Anfänger-Themen 1
Y Wie setze ich genau eine Stückliste (UML) in Java um? Java Basics - Anfänger-Themen 9
D Was genau ist JDBC? Java Basics - Anfänger-Themen 2
K Code vereinfachen mit Schleife, aber wie genau? Java Basics - Anfänger-Themen 3
L Jarfiles packen, wie geht's genau? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
A Wenn genau welche Liste verwenden? Java Basics - Anfänger-Themen 6
S Erste Schritte Konstruktor - wie genau funktioniert der Code? Java Basics - Anfänger-Themen 16
J Klickposition genau bestimmen Java Basics - Anfänger-Themen 12
N aktuelle Datum Mikrosekunden genau bestimmen Java Basics - Anfänger-Themen 8
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
D Wie genau programmiere ich eine Assoziationsklasse? Java Basics - Anfänger-Themen 3
D Wie genau kann ich in Java Komponenten entwickeln? Java Basics - Anfänger-Themen 6
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
M Was ist genau eine Abstraktion in java Java Basics - Anfänger-Themen 3
J Was genau davon ist Anweisung, was Deklaration? Java Basics - Anfänger-Themen 2
bigbasti Warum genau braucht man Interfaces? Java Basics - Anfänger-Themen 10
B Zeitmessung nicht genau genug Java Basics - Anfänger-Themen 11
L Hilfe, ich versteh nicht was mein Prof genau von mir will! Java Basics - Anfänger-Themen 9
C Wie genau geht man bei der Konzeptionierung vor? Java Basics - Anfänger-Themen 5
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
D Mathematik in Java - genau? Java Basics - Anfänger-Themen 6
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
onlyxlia Was bedeutet das @Override? Java Basics - Anfänger-Themen 1
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
S Was bedeutet ungleich (in diesem Zusammenhang)? Java Basics - Anfänger-Themen 2
S Was bedeutet das Zeichen := Java Basics - Anfänger-Themen 9
H Was bedeutet das: [I@7d4991ad? Java Basics - Anfänger-Themen 20
P Was bedeutet dieser Fehler? Java Basics - Anfänger-Themen 31
MiMa Was bedeutet unchecked or unsafe operations? Java Basics - Anfänger-Themen 6
ZH1896ZH OOP Verstehe nicht was der Hinweis bedeutet, bitte um Hilfe! Java Basics - Anfänger-Themen 2
O Was bedeutet das hier 999_983? Java Basics - Anfänger-Themen 2
D Was bedeutet diese Schreibweise? Java Basics - Anfänger-Themen 9
W Was bedeutet im Struktogramm „zufall“ aufrufen (keine Parameterübergabe)? Java Basics - Anfänger-Themen 8
S Erste Schritte Was bedeutet dieser Code? Java Basics - Anfänger-Themen 2
D Erste Schritte Was bedeutet dieser Code? Java Basics - Anfänger-Themen 23
R Was bedeutet -1 Java Basics - Anfänger-Themen 2
V OOP Was bedeutet das "aBruch" Java Basics - Anfänger-Themen 6
U Was bedeutet $@ in der Linux Kommandozeile Java Basics - Anfänger-Themen 3
dave253 Was bedeutet (String args[])? Java Basics - Anfänger-Themen 6
D was bedeutet this. bei Konstruktoren? Java Basics - Anfänger-Themen 4
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
G Methoden Was bedeutet return in einer Methode Java Basics - Anfänger-Themen 5
V Was bedeutet das? Java Basics - Anfänger-Themen 4
G zeile: Was bedeutet das in der Methode? Java Basics - Anfänger-Themen 4
Y Was bedeutet "this" ohne dem Punkt und dem Atrributnamen danach? Java Basics - Anfänger-Themen 2
M was bedeutet setEnabled Java Basics - Anfänger-Themen 12
F Was bedeutet '@'? Java Basics - Anfänger-Themen 3
F Frage von einem Neuling: Was bedeutet Scanner scanner ? Java Basics - Anfänger-Themen 5
K Schlüsselworte Was bedeutet oder was ist die SIGNATUR?? Java Basics - Anfänger-Themen 4
O Was bedeutet public class value? Java Basics - Anfänger-Themen 3
A Was bedeutet der Operator *= ? Java Basics - Anfänger-Themen 2
N Was bedeutet << Java Basics - Anfänger-Themen 5
G Was bedeutet diese Zeile? Java Basics - Anfänger-Themen 2
J Was bedeutet This. ? Java Basics - Anfänger-Themen 4
S Was bedeutet dieser ausdruck? Java Basics - Anfänger-Themen 9
J Was bedeutet dieses a [i].length? Java Basics - Anfänger-Themen 3
D Was bedeutet < > Java Basics - Anfänger-Themen 4
D Was bedeutet das ?: Java Basics - Anfänger-Themen 9
B Was bedeutet static<T>?? Java Basics - Anfänger-Themen 6
0 Was bedeutet dieser Generic-code? Java Basics - Anfänger-Themen 3
php1 Was bedeutet der Modifier static ? Java Basics - Anfänger-Themen 3
K Was bedeutet das eigentlich.... Java Basics - Anfänger-Themen 18
G Was bedeutet? Java Basics - Anfänger-Themen 7
G Was bedeutet charAt()? Java Basics - Anfänger-Themen 5
J Was bedeutet der Doppelpunkt ":" ? Java Basics - Anfänger-Themen 3
G was bedeutet //TODO Java Basics - Anfänger-Themen 4
B was bedeutet "this" Java Basics - Anfänger-Themen 8
L Was bedeutet das Wort "this" ? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben