login

Java Grundlagen

Ein Einführung in die Grundlagen der Programmiersprache Java.

2023-11-07


Einführung

Dieser Artikel ist für Personen gedacht, die mit Java ihre ersten Programmiererfahrungen machen.


Java Plattform

Wenn man Java auf seinem Computer installieren möchte, hat man zwei verschiedene Installationsoptionen zur Auswahl:

Das nachfolgende Diagramm veranschaulicht die Verschachtelung der einzelnen Installationspakete.

+-----------------------+
|          %gJDK%n          |
|  +-----------------+  |
|  |       %gJRE%n       |  |
|  |  +-----------+  |  |
|  |  |    %gJVM%n    |  |  |
|  |  +-----------+  |  |
|  +-----------------+  |
|                       |
|  +-----------------+  |
|  |      %gJAVAC%n      |  |
|  +-----------------+  |
+-----------------------+

Java Virtual Machine

Die JVM (Java Virtual Machine) ermöglicht es Java Programme auszuführen. Dabei wird der Maschinenecode (.class Dateien) von der Software interpretiert und die entsprechenden Betriebssystem-abhängigen Befehle ausgeführt.

Somit kann der Programmcode auf verschiedenen Betriebssystemen ohnen zusätzliche Anpassungen ausgeführt werden.

       +-----------------------+
       |         %gJava%n          |
       |     %gMaschinencode%n     |
       +-----------------------+
       /           |           \
      /            |            \
     v             v             v
%d+---------+%n   %d+---------+%n   %d+---------+%n
%d|   %gJVM%d   |%n   %d|   %gJVM%d   |%n   %d|   %gJVM%d   |%n
%d+---------+%n   %d+---------+%n   %d+---------+%n
| %gWindows%n |   |  %gLinux%n  |   |  %gMacOS%n  |
|         |   |         |   |         |

Kompilieren und Ausführen

Zu Beginn schreiben wir ein simples Java Programm. Dazu erstellen wir eine neue Datei mit dem Namen HelloWorld.java und schreiben den nachfolgenden Programmcode im Texteditor deiner Wahl.

HelloWorld.java

%kpublic%n %kclass%n %gHelloWorld%n {

  %kpublic%n %kstatic%n %gvoid%n %fmain%n(%gString%n[] args) {
    %gSystem%n.out.%fprintln%n(%s"Hello world!"%n);
  }
}

Dieses Programm soll den Text "Hello world!" in der Konsole ausgeben. Nachdem die Datei gespeichert wurde, können wir nun unseren Programmcode kompilieren. Dies wird im nächsten Kapitel behandelt.

MERKE: Der Klassenname muss mit dem Dateinamen übereinstimmen.

Kompilierung des Programmcodes

%gjavac%n HelloWorld.java

Nachdem der Programmcode erfolgreich und ohne Fehler kompiliert wurde, sollte nun eine neue Datei mit dem gleichen Namen und der der Dateiendung .class erstellt worden sein. Diese Class-Datei enthält den Maschinencode der von der JVM ausgeführt werden kann.

Ausführung des Maschinencodes

%gjava%n HelloWorld

TIPP: Wenn der java Befehl mit der Dateiendung .java ausgeführt wird, wird der Programmcode gleichzeitig kompiliert und ausgeführt. Dies funktioniert jedoch nur, wenn es sich um eine einzige Java Datei handelt.

%gjava%n HelloWorld.java

Grafische Veranschaulichung des Kompilierungs- und Ausführungsprozesses.

+--------+                  +--------+                  +---------+
|        |      %gjavac%n       |        |       %gjava%n       |         |
| %g.java%n  |  %f------------->%n  | %g.class%n |  %d------------->%n  |   %gJVM%n   |
|        |   %fkompilieren%n    |        |    %dausführen%n     |         |
+--------+                  +--------+                  +---------+

Variablen

...

SYNTAX: Deklaration und Initialisierung einer Variable

%gint%n count = %d21%n;
^   ^       ^
|   |       Wert
|   Variable
Datentyp

Datentypen

Primitive Datentypen

Datentyp Speichergröße Beschreibung
byte 1 byte (8 bit) binäre Daten
short 2 bytes (16 bit) Ganzzahl
int 4 bytes (32 bit) Ganzzahl
long 8 bytes (64 bit) Ganzzahl
float 4 bytes (32 bit) Fließkommazahl
double 8 bytes (64 bit) Fließkommazahl
boolean 1 bit Wahrheitswert (true oder false)
char 2 bytes (16 bit) Textzeichen

MERKE: Primitive Datentypen haben immer einen Wert, wobei nicht-primitive Datentypen null sein können.

Wrapper Klassen

Referenztypen


Klassen

...

Das folgende Diagramm veranschaulicht den Aufbau einer Klasse.

+-----------------------+
|  %gClass (Klasse)%n       |
|  +--------------------+
|  |  %gMethod (Methode)%n  |
|  |  +-----------------+
|  |  |  %gProgrammcode%n   |
|  |  |                 |
|  |  |                 |
|  |  +-----------------+
|  +--------------------+
+-----------------------+

SYNTAX: Instanziierung einer Klasse

%gPerson%n person = %knew%n %gPerson%n(...);
^      ^            ^      ^
|      |            |      Konstruktor-Argumente
|      |            Klasse
|      Instanz (Variable)
Klassenobjekt

Methoden

...

SYNTAX: Definition und Deklaration einer Klassenmethode

%kpublic%n %gint%n %fadd%n(%gint%n a, %gint%n b) { ... }
^      ^   ^   ^               ^
|      |   |   |               Inhalt der Methode
|      |   |   Parameter
|      |   Methodenname
|      Datentyp des Rückgabewerts
Zugriffsmodifikator

Modifikatoren

static-Modifikator

Diese Klasse dient für die nachfolgenden Beispiele als Referenz.

%kpublic%n %kclass%n %gPerson%n {

  %kpublic%n %kstatic%n %gPerson%n %fof%n(%gString%n name) { ... }

  %kpublic%n %gString%n %fgetName%n() { ... }
}

Statische Methoden und Variablen können nur an der Klasse aufgerufen werden und sind somit klassenspezifisch.

%gPerson%n person = %gPerson%n.%fof%n(%s"Andrew"%n);

Nicht-statische Methoden und Variablen können nur an der Klasseninstanz aufgerufen werden und sind somit instanzspezifisch.

person.%fgetName%n();

MERKE: Nicht-statische Methoden können nicht innerhalb statischer Methoden aufgerufen.

final-Modifikator

Der final Modifikator makiert eine Variable als unveränderlich. Das bedeutet, die Variable kann nur einmal initialisiert werden.

%kfinal%n %gint%n age = %d24%n;
age = %d16%n; %c// Invalide Zuweisung%n

MERKE: Variablen die nur einmal initialisiert werden, sollten immer mit final sein.


Pakete und Imports

SYNTAX: Import eines Klassenobjekts

%kimport%n java.util.List;
       ^         ^
       |         Klasse
       Paketpfad

Referenzen


Begriffserklärung

Kompilierung
...

Interpretation
...

Deklaration
Festlegung von Speichergröße, Bezeichner und Datentyp einer Variable

Definition
Definiert wie etwas implementiert wird (z.B.: Inhalt einer Methode)

Initialisierung
Erstmalige Zuweisung eines Wertes an eine Variable

Instanziierung
Erstellung und Zuweisung von Speicherplatz für ein Objekt einer bestimmten Klasse