Betrachten wir ein Java Programm, so kann es als eine Art Ansammlung von Objekten, die über Methoden miteinander "kommunizieren" angesehen werden. Um verstehen zu können, wie Java nun genau funktioniert, gehen wir nun einmal kurz auf die Begriffe Objekt, Klasse, Methode und Instanzvariable ein, die für das Verständnis essentiell sind:
Werfen wir nun für das erste Mal einen Blick auf richtigen Java Code, der "Hallo Welt" auf der Konsole ausgibt:
01 02 03 04 05 06 07 08 09 10 | public class MyFirstJavaProgram { /* Das erste Java Programm... * ...gibt Hallo Welt auf der Konsole aus */ public static void main(String []args) { System.out.println("Hallo Welt"); // gibt Hallo Welt aus }} |
public class MyFirstJavaProgram {
/* Das erste Java Programm...
* ...gibt Hallo Welt auf der Konsole aus
*/
public static void main(String []args) {
System.out.println("Hallo Welt"); // gibt Hallo Welt aus
}
}
Um nun "live" zu sehen, was dieser Code macht, müssen wir diesen ausführen. Hierfür sind folgende Schritte wichtig (Java muss bereits installiert und dessen PATH-Variable gesetzt sein):
.java hat oder mit .txt aufhört. Sollte letzteres der Fall sein, benenne sie so um, dass sie auf .java endet).cd <Verzeichnis> in das Verzeichnis, in welchem du deine MyFirstJavaProgram.java Datei gespeichert hast (Solltest du keine Berechtigung dazu haben, ein cmd-Fenster über die Tasten Kombination Win + R aufzurufen, frag entweder den Systemadministrator nach Hilfe oder schreibe den genannten Befehl und alle folgenden getrennt durch jeweils einen Absatz (1x mal Enter drücken) und als zusätzlichen Befehl pause nach dem letzten aus dieser Liste in eine Datei mit der Endung .bat und doppelklicke diese)javac MyFirstJavaProgram.java deine Datei.java MyFirstJavaProgram ausWenn alles richtig funktioniert hat, sollte dein cmd-Fenster nun so aussehen:
<Verzeichnis> javac MyFirstJavaProgram.java<Verzeichnis> java MyFirstJavaProgram Hello World |
<Verzeichnis> javac MyFirstJavaProgram.java
<Verzeichnis> java MyFirstJavaProgram
Hello World
In dem Fall, dass du keine Berechtigung zum Öffnen eines cmd-Fenster über Win + R hattest, sollte dein cmd-Fenster nun so aussehen:
<Verzeichnis> javac MyFirstJavaProgram.java<Verzeichnis> java MyFirstJavaProgram Hello World<Verzeichnis> pauseDrücken Sie eine beliebige Taste... |
<Verzeichnis> javac MyFirstJavaProgram.java
<Verzeichnis> java MyFirstJavaProgram
Hello World
<Verzeichnis> pause
Drücken Sie eine beliebige Taste...
Zunächst gibt es ein paar Punkte, die man sich unbedingt im Kopf behalten sollte:
name und gleichzeitig ein anderes Objekt Name zu nennen.class MyFirstJavaProgrampublic void myMethodName.java. Um etwas vorzugreifen: Ist in der Datei keine Klasse mit dem public Modifizierer vorhanden, so spielt der Name der Datei keine Rolle. Beispiel: Angenommen die Klasse heißt MeinKlasse, so muss die Datei MeineKlasse.java heißen.public static void main(String args[]){...} - Jedes Java Programm startet in der main() Methode, womit auch in jedem Java Programm eine solche Methode vorhanden sein muss.Um Dinge oder besser gesagt "Objekte" in Java idenzifizieren, das heißt immer eindeutig ansprechen zu können, werden für Variablen, Methoden, Klassen und Schnittstellen (Genaueres zu Schnittstellen in einem folgenden Kapitel) werden Bezeichner (Auch Identifizierer, engl: identifier genannt) vergeben. Ein Bezeichner ist ganz einfach eine Folge von Zeichen, welche Elemente aus dem Unicode-Zeichensatz sein müssen. Jedes einzelne Zeichen ist hierbei für die Identifikation wichtig (Ein Bezeichner mit 50 Zeichen muss immer mit allen 50 Zeichen korrekt angegeben werden). Jedoch gibt es auch für Bezeichner bestimmte Regeln, nach denen ihre Zeichen gewählt werden müssen. So muss ein Bezeichner ausschließlich aus Java-Buchstaben (=Alle lateinischen, griechischen und arabischen Buchstaben + noch viele weitere Zeichen aus dem Unicode-Alphabet wie €, $ und ¥) und Java-Ziffern bestehen und immer mit einem Java-Buchstaben beginnen. Obwohl die zuvorgenannten festen Regeln viele verrückte Bezeichner zulassen, sollte grundsätzlich die Programmierung mit englischen Bezeichnernamen erfolgen. Nun folgt eine Tabelle mit gültigen Bezeichnern und deren Begründung und danach dasselbe für ungültige Bezeichner.
| Gültiger Bezeichner | Grund |
|---|---|
Matteo |
Besteht nur aus Alphazeichen |
_HaLLo_ |
Unterstriche sind erlaubt |
BéÉN |
Akzente sind erlaubt |
Ω |
Griechische Buchstaben zählen zu Java-Buchstaben |
G€LD |
Auch das Euro-Zeichen ist ein Java-Buchstabe |
¥€$ |
Absurd, jedoch alles Java-Buchstaben und somit gültig |
| Ungültiger Bezeichner | Grund |
|---|---|
2Numern |
Beginnt mit einer Ziffer, muss allerdings mit einem Java-Buchstaben beginnen |
kind alter |
Leerzeichen sind nicht erlaubt |
dead! |
Viele Sonderzeichen, wie das Ausrufezeichen, sind ungültig |
class |
Ist bereits ein Schlüsselwort von Java (Mehr dazu später) |
_ |
Ein einzelner Unterstricht gehört seit Java 9 zu den reservierten Schlüsselwörtern |
Soll ein Bezeichnername aus mehreren Wörtern zusammengesetzt werden, so wird auch hier wie bei der Benennung von Klassen und Methoden (Deren Namen auch Bezeichner sind) die CamelCase-Schreibweise empfohlen.
So wird zum Beispiel aus dem ungültigen Bezeichner get user input der gültige Bezeichner getUserInput.
Um dieses Unterkapitel abschließend abzurunden, folgt nun das Code-Beispiel aus dem Unterkapitel "Das erste bisschen Java Code" von zuvor mit einer Auflistung der darin enthaltenen Bezeichner:
01 02 03 04 05 06 07 08 09 10 | public class MyFirstJavaProgram { /* Das erste Java Programm... * ...gibt Hallo Welt auf der Konsole aus */ public static void main(String []args) { System.out.println("Hallo Welt"); // gibt Hallo Welt aus }} |
public class MyFirstJavaProgram {
/* Das erste Java Programm...
* ...gibt Hallo Welt auf der Konsole aus
*/
public static void main(String []args) {
System.out.println("Hallo Welt"); // gibt Hallo Welt aus
}
}
Bezeichner: MyFirstJavaProgram, main, String (String ist streng genommen kein Datentyp, sondern eine Klasse, auch wenn er in Java beinahe wie einer behandelt wird. Doch auch mehr hierzu später), args, System, out und println.
Konstante Ausdrücke werden als Literal bezeichnet. Dabei wird zwischen folgenden verschiedenen Typen von Literalen unterschieden:
true und false43219.45 oder 4.321E-2
'A' oder '\n'"Matteo Mertz"null - Ein besonderer Referenztyp
Wenn wir nun noch einmal einen Blick auf das bereits verwendete Programm aus den vorherigen Unterkapiteln werfen, finden wir genau ein Literal: Das String-Literal "Hallo Welt".
01 02 03 04 05 06 07 08 09 10 | public class MyFirstJavaProgram { /* Das erste Java Programm... * ...gibt Hallo Welt auf der Konsole aus */ public static void main(String []args) { System.out.println("Hallo Welt"); // gibt Hallo Welt aus }} |
public class MyFirstJavaProgram {
/* Das erste Java Programm...
* ...gibt Hallo Welt auf der Konsole aus
*/
public static void main(String []args) {
System.out.println("Hallo Welt"); // gibt Hallo Welt aus
}
}
Die Programmiersprache Java an sich, bzw. ihre Logik, besteht aus für sich reservierten Schlüsselwörtern, die sich aus diesem Grund auch nicht als Bezeichnername wählen lassen. Auch der Programmierer kann keine eigenen Schlüsselwörter definieren.
Wenn wir nun noch einmal einen Blick auf das bereits verwendete Programm aus den vorherigen Unterkapiteln werfen, finden wir genau ein Literal: Das String-Literal "Hallo Welt".
01 02 03 04 05 06 07 08 09 10 | public class MyFirstJavaProgram { /* Das erste Java Programm... * ...gibt Hallo Welt auf der Konsole aus */ public static void main(String []args) { System.out.println("Hallo Welt"); // gibt Hallo Welt aus }} |
public class MyFirstJavaProgram {
/* Das erste Java Programm...
* ...gibt Hallo Welt auf der Konsole aus
*/
public static void main(String []args) {
System.out.println("Hallo Welt"); // gibt Hallo Welt aus
}
}
In der folgenden Tabelle sind Schlüsselwörter (Im Fall von true, false und null Literale) aufgeführt, die demnach nicht mehr als Bezeichnernamen verwendet werden dürfen:
abstract |
continue |
for |
new |
switch |
assert |
default |
goto |
package |
synchronized |
booelan |
do |
if |
private |
this |
break |
double |
implements |
protected |
throw |
byte |
else |
import |
public |
throws |
case |
enum |
instanceof |
return |
transient |
catch |
extends |
int |
short |
try |
char |
final |
interface |
static |
void |
class |
finally |
long |
strictfp |
volatile |
const |
float |
native |
super |
while |
Ein fundamental wichtiger Baustein von Programmiersprachen sind Kommentare. Sie ermöglichen dem Programmierer, seine Gedanken verständlich zu formulieren, sodass auch die Nachwelt und nach einiger Zeit er selbst noch verstehen kann, was sein Code eigentlich tut. Somit dienen sie einzig und allein dem Codeverständnis des Lesers und haben keinerlei Auswirkung auf das Programm. Insgesamt gibt es drei verschiedene Möglichkeiten in Java Kommentare zu schreiben:
// und kommentieren das, was in der Zeile nach ihnen noch kommt aus. Somit gelten sie bis zum Ende der Zeile/dem Zeilenumbruchszeichen./* und */ aus (Wie der Name bereits vermuten lässt auch gesamte Blöcke, das heißt mehrere Zeilen). Dabei darf der Text in einem Blockkommentar selbst kein */ enthalten, da in Blockkommentaren keine Verschachtelung möglich ist./** und */ aus. In ihnen wird die Methode oder deren Parameter beschrieben, aus was sich später die API-Dokumentation generieren lässt.Es folgt ein Code-Beispiel, in dem alle drei Kommentararten aufgeführt sind:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | /* * Dieser Quellcode wurde am 27.09.2020 geschrieben *//** * @author Matteo */public class Main { // TODO: Rename // When I wrote this only God and I understood what I was doing // Now, God only knows public static void main(String[] args) { System.out.println("Hallo Welt"); // Gibt "Hallo Welt" aus } } |
/*
* Dieser Quellcode wurde am 27.09.2020 geschrieben
*/
/**
* @author Matteo
*/
public class Main { // TODO: Rename
// When I wrote this only God and I understood what I was doing
// Now, God only knows
public static void main(String[] args) {
System.out.println("Hallo Welt"); // Gibt "Hallo Welt" aus
}
}