main Methode

Diskutiere main Methode im Java Basics - Anfänger-Themen Bereich.
B

Bright4.5

Hallo zusammen,

ich habe noch mal eine Aufgabe aus meinem Skript und komme leider nicht drauf und google hilft gerade auch nicht.

Aufgabe: 1) Wie ist der Aufbau der Main-Methode?
2) Kann die Main-Methode auch ohne formalen Parameter auskommen? Für was braucht es diese Methode und den formalen Parameter?
3) Wie wird dieser formale Paramater gebunden? Was ist der Vorteil dieser Bindungsart?

Meine Antwort zu 1):

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

zu 2) Nein, es braucht den formalen Parameter sonst kommt es zu einem Fehler bzw. das Programm kann nicht starten. Diese Methode dient als Programmeinstiegsklasse, die dem Laufzeitsystem bei dem Start eines Programms übergeben wird. Der formale Parameter referenziert ein String-Array und kann somit Argumente von Strings aufnehmen. Es braucht es weil zu Beginn der Programmausführung noch keine Objekte existieren, deshalb braucht es diese Methode und den formalen Parameter. Da man für jede Methode ein Empfängerobjekt braucht und das zu Beginn der Programmausführung noch nicht existiert.

zu 3) Dieser formale Parameter wird dynamisch gebunden, da es sich um ein Array handelt und somit um ein Objekt. Der Vorteil liegt darin, dass es dynamischer ist als das statische Binden.

Würde das soweit passen?

Vielen Dank im Voraus.
 
B

Bright4.5

Nummer 1 war mir ja klar und ist ja einfach, es geht mir hierbei eigentlich nur um 2 und 3. Die Methode wird ja eigentlich statisch gebunden, aber der formale Parameter?? Genau die Sache mit dem Grund für die main-Methode. Es ist doch so, dass am Anfang einfach noch kein Objekt existiert und es deshalb die Main-Methode braucht, oder??
 
mihe7

mihe7

Diese Methode dient als Programmeinstiegsklasse
Nicht Programmeinstiegsklasse, sondern Programmeinstiegspunkt.

3) Wie wird dieser formale Paramater gebunden? Was ist der Vorteil dieser Bindungsart?
Ich würde sagen: Parameter werden statisch gebunden. Der Vorteil ist, dass sich das einerseits effizient implementieren lässt, da beim Übersetzen lediglich der statische Typ geprüft werden muss, andererseits zur Übersetzungszeit klar ist, welche Namen zur Verfügung stehen. So kann bei einem Array nur auf args.length zugegriffen werden, selbst wenn es möglich wäre, einen Subtyp von Array zu erstellen (was nicht der Fall ist).
 
B

Bright4.5

hmm Okay, und würde meine Argumentation zu 2) soweit passen. Vor allem der Teil, weil am Anfang ja noch kein Objekt existiert.
 
J

JennyL

Naja, "wird zu Beginn ausgeführt" ist auch nicht ganz richtig:
Java:
public class SomeClazz {
	static {
		System.out.println("one");
	}

	/**
	 * The program entry point.
	 * @param args the command line arguments
	 */
	public static void main(String[] args) {
		System.out.println("two");
	}
}
Es wird one two ausgegeben.
 
mihe7

mihe7

hmm Okay, und würde meine Argumentation zu 2) soweit passen. Vor allem der Teil, weil am Anfang ja noch kein Objekt existiert.
Nein. Das ist einfach eine Definitionsfrage. Es hätte genauso funktioniert, hätte man gesagt: hey, die Klasse, die ihr beim Aufruf angebt, muss einen default-Konstruktor und eine nicht statische Methode run(String[] args) haben. Auch wäre es möglich gewesen, zu sagen: hey, die Klasse, muss einen Konstruktor besitzen, der die Befehlszeilenparameter als String-Array entgegennimmt und eine parameterlose Methode run(). In den Fällen müsste die JVM beim Programmstart erst eine Instanz erzeugen und so, wie es mit static void main läuft, spart man sich halt diese Objekterzeugung.
 
Thema: 

main Methode

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben