Normal, dass ich als Anfänger diesen Satz nicht verstehe: "Die Parameter der Methode werden in den Klammern deklariert, die dem Namen der Methode folgen." JAVA?

...komplette Frage anzeigen

8 Antworten

1) Ob es ein Normverhalten ist, kann ich dir nicht sagen.

2) Ein Parameter ist ein Argument, welches einem (Sub)Programm übergeben wird. Um es einmal bildlich darzustellen: Stell dir einen Mensch namens Klaus vor. Klaus kann reden, bzw. hat eine Funktion rede. Damit er aber weiß, was er reden soll, gibst du ihm eine Zusatzinformation mit auf den Weg.

In Code umgesetzt, sieht das folgendermaßen aus:

public class Mensch {
 public void rede(string wort) { // Wort ist ein Parameter, der das Argument bei Aufruf der Methode in sich aufnimmt
  System.out.println(wort);
 }
}

Mensch klaus = new Mensch(); klaus.rede("Hallo"); // Hallo ist das Argument, welches uebergeben wird

Vom Compiler umgesetzt sieht es so aus, dass das Argument (Hallo) direkt in die Variable wort gespeichert wird. Die Variable wort wird für die Methode rede als Parameter bezeichnet, denn zum einen steht sie in der Parameterliste (also innerhalb der Klammern des Funktionskopfes) und zum anderen nimmt sie das Argument auf, welches ihr bei Aufruf übergeben wurde.

Übertragen auf die main-Methode ist args ebenso ein Parameter.

public static void main(String[] args)

Da diese Methode der Einstiegspunkt deines Programmes ist, werden die Argumente dem Programm allerdings etwas anders übergeben, als wenn du eine Methode innerhalb des Programmes aufrufen würdest. Die Dokumentation erklärt die Übergabe von Argumenten über die Kommandozeile an ein Java-Programm gut und zeigt auch ein Beispiel auf.

https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html

3)

"die dem Namen der Methode folgen"

Methoden / Funktionen gruppieren Code-Abschnitte und ordnen sie kontextuell. So teilst du dein Programm in mehrere Abschnitte ein, die jeweils bestimmte Aufgaben haben. Würdest du bspw. einen Roboter programmieren wollen, der läuft, hättest du Methoden, die seinen Fuß heben und senken.

Eine Funktion besteht aus einem Kopf und einem Rumpf. Der Kopf beinhaltet Zugriffsmodifikatoren (wie z.B. public), bestimmte Schlüsselworte (wie z.B. static), einen Rückgabetyp (z.B. void) sowie einen Namen, eine Parameterliste und optional eine Anweisung, welche Ausnahmen innerhalb der Funktion auftreten können. Vergleiche meine Auflistung noch einmal mit dem Kopf von main. Wofür all diese Bestandteile stehen und welche es gibt, wirst du später lernen.

Der Rumpf wird immer zwischen geschweiften (eine öffnend, eine schließend) Klammern gruppiert.

4)

"Für main ist es ein Array aus Strings mit dem namen Args"

Nun steht nur noch Array aus Strings offen, was erklärt werden müsste. Variablen haben einen Datentyp. Der gibt dem Rechner Auskunft, womit er da gerade herumhantieren soll. Wenn er bspw. rechnet, ist es nützlich für ihn zu wissen, ob er da gerade Ganzzahlen, Fließkommazahlen oder Zeichenketten vor sich liegen hat.

Ein String ist ein Datentyp, der eine Zeichenkette bezeichnet. Ein Array ist ein Datentyp, welcher mehrere Elemente eines bestimmten Datentyps in sich aufnehmen kann (also eine Liste mit fester Größe). Wenn du also mehrere Strings über eine Variable ansprechen möchtest, kannst du dir ein Array anlegen, welches Strings beinhaltet. Der Parameter von main tut das.

String[] args

Die eckigen Klammern geben im Übrigen an, dass man es mit einem Array zu tun hat. Andere Beispiele für Arrays:

int[] zahlen;

char[] zeichen;
Tier[] tiere;

Und nochmal zum Vergleich: Eine Variable tier vom Typ Tier zeigt auf ein Tier. Eine Variable tiere vom Typ Tier[] zeigt auf eine Liste an Tieren.

Ferner solltest du in deinem Lehrbuch weiterlesen. Ich denke mal, du bist gerade erst auf den ersten Seiten und der Autor hat sich einmal wieder diesen nicht unüblichen, aber m.E. ungünstigen, Einstiegspunkt ausgesucht.

Parameter sind Werte, die du einer Methode übergeben kannst. Wenn du zum Beispiel eine Methode schreiben willst, welche die Summe zweier Zahlen zurückgeben soll, benötigst du zwei Parameter: undzwar die beiden Zahlen:

public double addiere (double zahl1, double zahl2) {
return zahl1 + zahl2;
}

Das heißt, Parameter legen fest, was eine Methode tut. Du kannst so also der Methode bestimmte Dinge mitteilen. Du kannst es dir so wie mathematische Funktionen vorstellen wie z.B. die Sinusfunktion: Unterschiedliche Parameter bewirken verschiedene Rückgabewerte.

Der Satz bedeuted demzufolge, dass die Parameter in der Klammer stehen, die nach dem Namen der Methode kommt.

In Java sieht eine Methode vereinfacht gesagt so aus:

sichtbarkeit datentyp name (datentyp parameter1, datentyp parameter2, ...) {
code
rückgabewert
}

Sichtbarkeit: Legt fest, von wo du eine Methode aufrufen kannst. Es gibt drei Stufen. Methoden mit der Sichtbarkeit public kannst du von überall aufrufen, also auch in einem ganz anderen Programm. private bedeuted, dass du die Methode nur in der Klasse selbst aufrufen kannst. protected heißt, du kannst die Funktion im gleichen Package sowie in allen erbenden Klassen aufrufen.

Datentyp: Legt fest, von welchem Typ die Werte sind. Der Datentyp vor dem Namen der Methode bestimmt, von welchem Datentyp der Wert ist, den die Methode zurückliefert. Eine Methode, die also Zahlen addiert liefert logischerweise eine Zahl zurück. Außer den typischen Datentypen wie int (Ganzzahl), double (Kommazahl), char (Zeichen), String (Zeichenkette), etc. gibt es für diese Stelle speziell noch den leeren Datentyp (void), falls die Methode nichts zurückgeben soll.

Der Datentyp vor den Parametern bestimmt für jeden Parameter den Datentyp einzeln.

Jeder Parameter bekommt einen Namen, über den er in der Methode angesprochen werden kann.

Der Rückgabewert wird mit "return" bestimmt. Er kann z.B. in einer Variablen gespeichert werden. Bsp.:

double ergebnis = addiere (2, 3);

Diese Zeile bedeutet, dass zunächst die Methode addiere mit den Parametern 2 und 3 aufgerufen wird. Diese addiert die beiden Zahlen und gibt mit return das Ergebnis zurück, welches den Datentyp double hat (siehe die Methode addieren oben). Dieses Ergebnis wird nun in der Variablen ergebnis gespeichert, die natürlich auch den Datentyp double haben muss. D.h. ergebnis ist nun gleich 5.

Wenn du das erstmal verstanden hast und genügend geübt hast, kannst du zusätzlich im Internet die beiden Modifier static und final recherchieren bzw. hier nachfragen.

Zur Methode main: Dieser wird auch ein Parameter übergeben, nämlich vom Datentyp String[]. Es handelt sich also um eine Zeichenkette. Die eckigen Klammern verweisen aber darauf, dass es nicht nur eine einzige Zeichenkette ist, sondern sogar eine ganze Liste von Zeichenketten, ein sogenanntes Array. Dieses erhält den Namen args. Für den Anfang kannst du diesen Parameter aber einfach ignorieren und sturr hinschreiben, weil man ihn so gut wie nie benötigt, es sei denn du entwickelst Programm, die nicht über die grafische Oberfläche geöffnet werden, sondern über die Kommandozeile.

Mit Arrays solltest du dich aber auf jeden Fall genauer beschäftigen. Falls du dazu Fragen haben solltest, öffne bitte eine neue Frage.

Name der Methode:

Public static void main(String[] args)

Das "Public static" davor sind "Modifikatoren" und "void" ist der "Rückgabetyp", aber darum geht es im Moment wohl nicht.

Klammern dahinter (dahinter ist das, was "folgen" bedeutet):

Public static void main(String[] args)

Parameter ist das, was man an die Funktion übergibt. Nennt man auch "Argumente", um die Sache nicht zu einfach zu machen.

Vielleicht ist das hier noch zu kompliziert - dann müsstest du schon mal selber Funktionen definiert und aufgerufen haben: In der Funktionsdeklaration (da wird nur gesagt, wie die Funktion aufgerufen wird) und in der Funktionsdefinition (da steht dann auch drin, was die Funktion macht) steht auch, von welcher Art die Parameter sein müssen. (Nachher beim Funktionsaufruf stehen da nur die Werte oder die Variablennamen.)

Parameter hier - hier gibt's nur einen:

Public static void main(String[] args)

String[] args besteht - wie alle Parameterdeklarationen - aus zwei Teilen:

- dem Typ des Parameters
- dem Namen des Parameters

Der Typ hier heißt "String[]". "String" (ohne die Klammern) bedeutet eine Zeichenkette. die eckigen Klammern bedeuten, dass man mehrere Variablen/Parameter/Argumente/... vom Typ String hat, die durchnummeriert sind (ab 0).

Der Name ist frei wählbar, solange er nur den Vorschriften für Namen entspricht.

Hier: wir haben mehrere Variablen, die Zeichenketten (Strings) aufnehmen können: args[0], args[1], ...

(Das Wichtigste bei einem Array ist, dass man statt einer festen Zahl auch eine Variable für die Nummer nehmen kann, dadurch kann man mit demselben Code auf verschiedene Variablen zugreifen, z. B. args[i])

PWolff 28.06.2017, 21:31

ach ja, auf die Frage selbst: ja, es ist normal, dass du als Anfänger diesen Satz nicht verstehst. Ich verstehe ihn auch nur, weil ich woandersher schon weiß, was er aussagen soll.

0

Die Methode main wird beim starten des Programms ausgeführt, dabei kann man Parameter übergeben, die man dann im Programm benutzen kann. Dabei haben die Parameter den Datentyp String.

Wenn du nur gefragt hättest, was die Zeile 

Public static void main( String[ ] args )

bedeutet, hätte ich vielleicht angefangen, dir das zu erklären oder hätte dich verwiesen auf https://www.gutefrage.net/frage/informatik-java-programmieren-uni-loesung-info--hilfe-gesucht--kann-mir-jemand-helfen-leichte-java-programme-fuer-die-uni-zu-schreiben#answer-185738015 .

Nachdem du uns aber auch sagst, dass du nicht mal den Begriff Parameter kennst, muss ich davon ausgehen, dass du auch nicht weißt, was Funktionen sind (ein Begriff aus der Mathematik, der so elementar ist, dass jemand, der ihn noch nicht kennt, wohl überhaupt keine Chance hat, sich selbst das Programmieren beizubringen).

FRAGE 1 also: Welche Klasse welcher Art von Schule besuchst du denn derzeit? 

FRAGE 2: Warum möchtest du programmieren? Und warum in Java?

FRAGE 3: Welchem Zweck genau sollen von dir geschriebene Programme dann dienen?

FRAGE 4: Du spricht von einer Übung. Wer erwartet, dass du verstehts, was dort beschrieben ist?

Eigentlich ist es ganz einfach und dennoch schon zweidetig. Jedenfalls in dem Beispiel.

Parameter bezeichnet man bei Methoden die Information, die man der Methode mit gibt, damit sie das Problem auch lösen kann.

Beispiel: Ich frage dich "gib mir die Summe". Dann schaust du mich an wie Auto und sagst "ja von was denn? Ich brauche mindestens zwei Parameter (Operanden (in dem Falle zwei Summanden)))"

Also sind summand1 und summand zwei aus der Methode:

public static int Summe(int summand1, int summand2) 

deine beiden Parameter.

Soviel zur Grundtheorie.

Ich hab am Anfang eigentlich gesagt, denn:

Dein Beispiel kommt von der main und hat als ein programmiertechnischen Parameter ein String-Array namens args. Steht übrigends für Argumente. Diese Argumente/Parameter sind die jenigen (durch Leerzeichen getrennte) Parameter (beim Programmaufruf aus der Konsole), welche hinter dem Programmnamen aufgelistet werden.

Also konsolentechnisch ist "ping 192.168.0.1 -p" ein Programmaufruf mit 2 Parametern.

Wenn du jetzt das Programm "ping" entwickeln würdest, dann kämen diese beiden Konsolenparameter bei dir in dem Programmierparameter args an. Diese müsstest du dann durch ene Schleife nur noch auswerten.

Kurz und knapp: Die Frage ist eigentlich relativ simpel zu beantworten. Wenn man es aber etwas weiter sieht, dann kann man es auch etwas differenziert betrachten.

Ich hoffe ich konnte dir helfen.

PS: In der Programmierung spricht man aber allgemein vom Parameter (wie args). Wenn das andere gemeint ist, dann sagt man das schon deutlich

Ja

das ist ein beknakkter schachtel satz.

static void main ist die methode die am anfang deines programms aufgerufen wird. also beim programm starten.

Dieser werden vom betriebsystem eventuell parameter übergeben also sowas wie meinprogram (IrgendeinWort)

diese parameter werden dann als String array also hinter einander als liste von String in das array namens args abgelegt.

mit args[0] rufst du den ersten parameter auf mit args[1,2,usw] die anderen.

public static void main --> entspricht der delkaration einer statischen methode namens main

main(parameter) in den klammern stehen die parameter also werte die an die methode übergeben werden, können strings also text aber es kann auch jeder andere datentyp sein.

hoffe ich konnte dir weiterhelfen bei deinem Problem

Viele Grüße

Der Name der Methode ist main, dahinter folgt in Klammern eine liste von Parametern. diese ist hier:

String[] args

Das ist auch gleichzeitig mit "Array aus Strings mit dem namen Args" gemeint. Die eckigen Klammern deuten an, dass es ein Array ist, das "String" davor sagt, dass es ein Array von Strings ist. Und args dahinter ist der Name.

Was möchtest Du wissen?