Kann mir jemand einen Code-Aufbau bei Java erklären?

7 Antworten

package und class solltest du dir detailierter durchlesen, das muss man schon genauer wissen.

zu den anderen Begriffen: public also öffentlich bedeutet, dass du den nachfolgenden code also die Funktion oder Variable auch an anderen Stellen wiederverwenden bzw. aufrufen kannst, ohne dich z.B. im gleichen Package oder in der gleichen Klasse zu befinden.

static steht für statisch, das bedeutet, dass die Funktion oder Variable nicht geändert werden kann, allerdings auch keine Instanz vom Objekt benötigt.

Instanzen sind Objekte von Klassen, wenn du z.B. die Klasse Kleid hast, kannst du ein Objekt rotes Kleid und grünes Kleid erzeugen. Eine Klasse ist quasi nur die Beschreibung um was es sich handelt.

Hast du jetzt eine statische Funktion, kannst du diese direkt über den Klassennamen aufrufen, z.b. Kleid -> gib die Länge aus, während du bei nicht statischen Funktionen das Objekt nutzen musst: rotes Kleid -> gibt die Farbe aus.

Void definiert den Typ der zurückgegeben werden soll. Bei void wird nichts zurückgegeben, schreibst du stattdessen z.b. int, müsstest du eine Ganzzahl zum Schluss deiner Funktionen "zurückschicken".

String[] ist der Typ des Parameters, den du deiner main Funktion übergibst, also ein Array [] vom Typ String, ein String ist eine Zeichenkette, ein Array eine Sammlung von Werten, du bekommst also eine Sammlung von Zeichenketten, diese werden in der Variable args gespeichert.

Dieser Aufbau ist bei der main methode immer gleich, denn die main methode ist der Einstiegspunkt, nachdem dein Compiler (Übersetzer) sucht. Deswegen muss sie von überall sichtbar sein (public) muss auch ohne Instanz aufgerufen werden können(static) hat keinen Rückgabewert (void) und du kannst ihr Argumente bzw. Zeichenketten übergeben String[] args.

chrmrs  05.11.2019, 15:46

sry wollte nicht kommentieren

1
  • package bezeichnet das "Paket", sozusagen den "Ordner", welcher alle Klassen dieses Pakets enthält
  • class sollte selbsterklärend sein
  • static = Statisch. Du brauchst KEIN Object, um es auszuführen
  • void = die Methode gibt nichts zurück
  • main = name der Methode, die aufgerufen wird. das hier ist die Main-Methode, die beim Start geöffnet wird
  • String[] args = die Methode nimmt ein String-Array und intern kannst du darauf mit args zugreifen. Enthalten sind die Parameter, die dem Programm als zusätzliche Argumente beim Start über die Kommandozeile übergeben werden
DerSpatz123 
Fragesteller
 05.11.2019, 15:30

Danke für die Antwort, aber wie triopasi es schon angedeutet hat, als Anfänger verstehe ich das wohl noch nicht

0
triopasi  05.11.2019, 15:33
@DerSpatz123

Stop. Das hört sich jetzt an als hätte ich gesagt du wärst zu doof und könntest das nicht verstehen. So war das nicht gemeint!

Du kannst es natürlich versuchen zu verstehen und musst nicht gleich sagen "verstehe ich eh nicht" - ich sage nur, dass dir noch Grundlagen dafür fehlen.

2

Java baut sehr auf einem objektorientierten Konzept auf (alle Programmelemente sind Objekte). Dies macht sich auch bei diesem Grundgerüst bemerkbar, ist einem Anfänger im Detail allerdings schlecht zu erklären, da zu einigem noch die Grundlagen fehlen, damit man es richtig gut verstehen kann.

Genau aus diesem Grund empfehle ich Anfängern stets Processing. Das ist eine Sprache, die auf Java baut, die Java-Sprache allerdings auch so stark reduziert, sodass man sich für den Einstieg in die Programmierung auf das Wesentliche konzentrieren kann, ohne viel Wörter schreiben zu müssen, auf dessen Bedeutung man sich noch gedulden muss. Toll ist hierbei auch, dass man nach Erlernen der Grundlagen nahtlos wieder zu Java wechseln kann - du kommst von deinem derzeitigen Weg also eigentlich gar nicht ab. Processing bietet noch einige andere Vorteile, lies mehr dazu hier.

Um zu guter Letzt noch einmal kurz auf deine eigentliche Fragestellung zurückzukommen: Ich würde dir, - solltest du so nun weitermachen wollen - an dieser Stelle eigentlich nur folgende Punkte erklären, die ich für den Moment als relevant für dich erachte:

  • package: Jedes Programm kann aus mehreren Dateien bestehen und diese Dateien kann man in Ordnern (Packages) einordnen. Die package-Direktive, die am Anfang jeder Datei angegeben werden sollte, definiert, in welches Package eine Datei gehört.
  • public class LogischeAusdrücke: Eine Klasse stellt einen besonderen Code-Block { } dar. Jede Klasse in deinem Programm sollte in einer eigenen Datei stehen, die denselben Namen trägt, wie die Klasse. In diesem Fall würde der Name deiner Datei LogischeAusdrücke.java lauten.
  • Bezüglich des ü in Ausdrücke noch ein Kommentar: Wenn du Namen für Elemente vergibst (Variablen, Funktionen, Klassen, ...), meide Sonderzeichen (auch Umlaute), um Probleme beim Kompilieren zu vermeiden. Die Klasse sollte eigentlich LogischeAusdruecke heißen (Datei: LogischeAusdruecke.java), oder du verwendest gleich von Anfang an englische Bezeichner.
  • public static void main: Jedes ausführbare Programm benötigt einen Startpunkt, von dem aus es beginnen kann, wenn man es startet. Der main-Code-Block stellt diesen Startpunkt dar.
  • String[] args: Wenn dein Programm gestartet wird, kann man ihm dabei auch noch Werte mitgeben, die dann im Programm über args abrufbar sind.

Ein simples Beispiel:

public class SayHello {
  public static void main(String[] args) {
    System.out.println("Hello " + args[0]);
  }
}

Mit args[0] wird auf den ersten Wert zugegriffen, der dem Programm übergeben wurde. System.out.println erzeugt eine Ausgabe auf der Konsole.

Wenn du das Programm nun via Konsole kompilierst und ausführst, kannst du im letzten Schritt einen Wert anhängen:

javac SayHello.java
java SayHello "world!"

Die Ausgabe wäre: Hello world!

Dein Programm braucht immer einen Einstiegspunkt, wo es anfangen, starten kann. Üblicherweise ist das die sogenannte main-Funktion.

Funktionen können aber nicht im Raum rumschweben, sondern müssen an eine Klassendefinition gebunden sein. Eine Klassendefinition ist ein Bauplan, der etwas darüber aussagt, wie ein Objekt aufgebaut ist. Bei dir heißt die Klassendefinition "LogischeAusdrücke".

Klassendefinitionen schweben auch nicht im Raum rum und befinden sich in Kisten, sogenannten Packeten (englisch: „packages"). In deinem Fall das Packet namens "projekt1".

Ein anderes Beispiel ist eine Kaffeemaschine. Eine Kaffeemaschine besteht aus Behältern mit Kaffeepulver, Milch, Wasser und was noch so dazu gehört, samt Gehäuse. Das ist deine Klassendefinition, die eine Kaffeemaschine bis ins Detail, bis auf jede Schraube, jedes Bauteil beschreibt.

Das Kochen von Kaffee, das ist eine Funktion eines Objekts, was nach dieser Klassendefinition gebaut wurde. Das ist das Programm, das läuft, wenn du die Kaffeemaschine anstellst. Alles, was während dem Kochen des Kaffee passiert, passiert irgendwo in deiner main-Funktion.

Das Packet ist die Verpackung, in dem die Kaffeemaschine gekommen ist. Da waren noch andere Bauteile (Klassendefinitionen) dabei, vielleicht noch ein Ausatz für die Maschine, die Kaffeepads unterstützt und dergleichen. Die brauchst du aber nicht unbedingt, um mit deiner Kaffeemaschine Kaffee zu kochen.

Es ERGIBT Sinn.

Das was xxxcybercxx gesagt hat. Man könnte das jetzt alles versuchen auf Grundschulniveau zu erklären, aber ich denke es ist sinnvoller einfach damit zu arbeiten. Wenn man ein Gefühl und Praxis hat, lässt sich das ganze einfacher verstehen.

Und ich empfehle dir IntelliJ statt Eclipse.

Woher ich das weiß:Hobby – Ich programmiere in meiner Freizeit mit Java.