Literatur

Lexikalische Konventionen

In Java können sowohl alle Buchstaben als auch Ziffern aus dem Ascii- und ISO-Latin-1-Zeichensatz verwendet werden. Es wird zwischen Groß- und Kleinschreibung unterschieden (case-sensitive). Das bedeutet, dass die Zeichenkette „Beispiel“ nicht gleich der Zeichenkette „beispiel“ ist. Dies gilt auch für Klassen-, Methoden- und Attributnamen.

Zum Zeichenvorrat in Java zählen aber auch das Leerzeichen, Steuerzeichen (Zeilenendzeichen, Tabulator …) und diverse Sonderzeichen. Die Sonderzeichen sind in zwei Kategorien eingeteilt. Die erste Kategorie bilden die Separatoren. Diese setzen sich aus den runden ( ( ) ), eckigen ( [ ] ) und geschweiften ( { } ) Klammern sowie den Satzzeichen Semikolon ( ; ), Komma ( , ) und Punkt ( . ) zusammen.
Die zweite Kategorie bilden die Operatoren:  = > < ! ~ ? : & | + - * / ^ %.

Ersatzdarstellungen

Der \ (Backslash) leitet eine sogenannte Ersatzdarstellung ein. Ersatzdarstellungen finden in Zeichenketten (Strings) Verwendung.

Die Ersatzdarstellung hat folgende Aufgaben.

1. Steuerbefehle einleiten

Ersatzdarstellung Bedeutung
\n Zeilentrenner, alle nachfolgenden Zeichen beginnen eine neue Zeile (new line)
\t Tabulator (tab)
\b das letzte Zeichen wird gelöscht (backspace)
\r Wagenrücklauf, springt zum Anfang der Zeile (carriage return)
\f Seitenvorschub, Wechsel zur nächsten Seite (form feed)

 

2. Sonderzeichen zu normalen Darstellungszeichen "entwerten"

Ersatzdarstellung Bedeutung
\\

Der Backslash hat auch die Funktion, sich selbst zu einem normalen Darstellungszeichen zu entwerten. Dies ist besonders bei Pfadangaben von Bedeutung. Setzt man innerhalb einer Zeichenkette nur EINEN Backslash, so würde der Compiler diesen als Einleitung einer Ersatzdarstellung sehen und nicht als normales Zeichen der Zeichenkette.

Um einen einzelnen Backslash abzubilden, muss er also immer verdoppelt werden:

System.out.println("c:\\programmierung\\java");
\'

In Java werden einzelne Zeichen (Character, Char) von einfachen Hochkommata umschlossen.

Der Backslash entwertet das Hochkomma zu einem normalen Zeichen.

So ist es z. B. möglich, das einfache Hochkomma selber als Zeichen darzustellen:

System.out.println(' \'' );
\"

Normalerweise ist es die Aufgabe von Anführungszeichen, eine Zeichenkette zu beginnen bzw. zu beenden. Damit es innerhalb der Zeichenkette als normales Anführungszeichen dargestellt werden kann, muss es durch den vorangestellten Backslash entwertet werden.

System.out.println("Er sagte: \"Java ist toll\"");

 

3. Zeichen aus dem Unicode-Zeichensatz darstellen

Ersatzdarstellung    Bedeutung
\ux1x2x3x4

Mit \u wird eine Unicode-Ersatzdarstellung eingeleitet.

x1x2x3x4 ist ein vierstelliger hexadezimaler Wert, der die Postion im Unicode-Zeichensatz angibt.

Bsp.:

System.out.println('\u03A9');

gibt das griechische Omega Ω aus.

 

Kommentare

Kommentare dienen dazu, den Code zu erläutern. Sie sind für die Programmausführung ohne Bedeutung, da sie nicht vom Compiler übersetzt werden. Mit Kommentaren sollten man nicht zu sparsam umgehen. Es ist oft sehr schwierig, sich Monate oder gar Jahre später im eigenen Code ohne Kommentare wieder zurecht zu finden. Erst recht sind Kommentare wichtig, wenn noch andere Entwickler am Projekt beteiligt sind.

In Java unterscheidet man drei Arten von Kommentaren:

1. Einzeiliger Kommentar:

Kommentarzeile beginnt mit //

 // Dies ist ein einzeiliger Java-Kommentar bis zum Zeilenende

2. Mehrzeiliger Kommentar:

Beginnt mit /* und endet mit */

/* 
 * Dies ist ein Kommentarblock, der sich über mehrere Zeilen 
 * erstrecken kann.
*/

3. Dokumentationskommentar:

Beginnt mit /** und endet mit */. Diese Kommentare werden für die Erstellung einer API-Dokumentation über das Javadoc-Tool mit einbezogen.

/** 
*   @author: Myself 
*   @description: Dies ist ein Javadoc-Kommentar
*/

Der Dokumentationskommentar sollte nur vor Klassen, Attributen und Methoden stehen. Er wird nicht von Javadoc ausgewertet, wenn er innerhalb einer Methode angewendet wird.

Innerhalb des Dokumentationskommentars können bestimmte Schlüsselwörter (Tags) verwendet werden, die bei der Dokumentationserstellung berücksichtigt werden.

Dokumentationskommentar-Tags

Tag Beschreibung Verwendung in
@author name

Name des Autors,
mehrere Einträge möglich.

Klasse, Interface

@version version

Gibt die Version an (maximal ein Eintrag pro Klasse oder Interface).

Klasse, Interface

@since version Gibt an, wann der Bestandteil hinzugekommen ist. Klasse, Interface, Instanzvariable, Methode

@see class

@see class#member

@see paket.class#member

Erzeugt in der Dokumentation einen "See also"-Eintrag, der auf ein anderes Element verweist.

Klasse, Interface, Instanzvariable, Methode
@param parameter description Beschreibung eines Parameters einer Methode. Methode
@return description Beschreibung des Rückgabe-Wertes einer Methode. Methode

@exception exception description

@throws exception description

Beschreibung einer Exception, die von dieser Methode geworfen werden kann.

@throws kann seit Javadoc 1.2 als Synonym von @exception verwendet werden.

Methode
@deprecated description Beschreibt eine veraltete Methode, die nicht mehr verwendet werden sollte. Methode
{@inheritDoc} Kopiert die Beschreibung aus der überschriebenen Methode. Überschreibende Methode
{@link reference} Erstellt einen Link zu einem anderen Bestandteil, reference ist dabei wie bei @see (s.o.) aufgebaut. alle

 

Schlüsselwörter (Keywords)

In Java gibt es reservierte Schlüsselwörter, die für die Java-Programmierung eine bestimmte Bedeutung haben.

Schlüsselwort Beschreibung
abstract Deklaration abstrakter Klassen und Methoden
assert Damit wird eine Aussage eingeleitet, von der man ausgeht, dass sie immer wahr ist. Wenn sie es nicht ist, wird das Programm abgebrochen.
boolean Einfacher Java-Datentyp, kann nur die beiden Werte true und false annehmen.
break Unterbrechung von Schleifen und switch-Anweisungen
byte Einfacher 8-Bit Java-Datentyp
case "Sprungverzweigung" in einer switch-Anweisung
catch Leitet die Ausnahmebehandlung (exception handling) nach einem try-Block (siehe unten) ein.
char Einfacher 16-Bit Unicode Datentyp (in der Regel einzelner Buchstabe)
class Kennzeichnet eine Klasse.
const Ist reserviert, findet aber keine Anwendung.
continue Ein neuer Schleifendurchgang wird gestartet..
default Standard-Sprungmarke einer switch-Anweisung
do Einleitung einer do-while-Schleife
double Einfacher 64-Bit Java Fließkomma-Datentyp
else Teil des if-else-Konstruktes. Wenn die if-Bedingung false ergibt, werden die Anweisungen des else-Blocks ausgeführt.
enum    Kennzeichnet einen Aufzählungstyp.
extends Wird bei der Deklaration von Klassen verwendet, um anzugeben, von welcher Oberklasse sie abgeleitet sind (erben).
final Modifikator für Klassen, Methoden und Attribute, der anzeigt, dass keine Änderung und auch kein Vererben und Überschreiben möglich ist.
finally Beendet eine try-catch-Anweisung und leitet einen Anweisungsblock ein, der in jedem Fall ausgeführt wird.
float Einfacher 32-Bit-Fließkomma-Datentyp
for Leitet eine for-Schleife ein.
goto      Ist reserviert, findet aber keine Anwendung.
if Bedingte Anweisung
implements Hierüber wird in der Klassendeklaration angegeben, welche Schnittstellen implementiert werden.
import Wird zu Beginn des Quellcodes eines Datei verwendet, um anzugeben, auf welche Pakete oder Klassen später zugegriffen wird.
instanceof Operator zur Überprüfung, ob ein Objekt einer bestimmten Klasse oder Interface angehört
int Einfacher 32-Bit-Ganzzahl-Datentyp
interface Deklarationseinleitung eines Interfaces
long Einfacher 64-Bit-Ganzzahl-Datentyp
native Kennzeichnet Methoden, die in einer anderen Programmiersprache implementiert wurden.
new Erzeugt ein neues Objekt.
package Leitet die Deklaration eines Paketes ein.
private Zugriffsmodifikator für Klassen, Attribute und Methoden (kein Zugriff von außen möglich)
protected Zugriffsmodifikator für Klassen, Attribute und Methoden (nur Zugriff innerhalb des selben Paketes)
public Zugriffsmodifikator für Klassen, Attribute und Methoden (für alle zugänglich)
return Springt zum Aufrufer zurück, gegebenenfalls mit Rückgabewert.
short Einfacher 16-Bit-Ganzzahl-Datentyp
static Dient als Modifikator für innere Klassen, Attribute und Methoden, um anzugeben, dass sie unabhängig von Objekten einmalig in einer Klasse existieren.
strictfp Kennzeichnet eine Methode, in der zum Zwecke der Portabilität Fließkomma-Operationen nach IEEE 754 durchgeführt werden sollen.
super Erlaubt Zugriff auf überschriebene Methoden und verdeckte Attribute der übergeordneten Klasse (Superklasse).
switch Leitet eine switch-Anweisung ein.
synchronized Dient der Thread-Synchronisation von Methoden.
this Bezeichnet die Referenz auf das eigene Objekt (sich selbst).
throw Leitet das "Werfen" einer Ausnahme (Exception) ein.
throws Gibt an, welche Ausnahmen (Exceptions) bei einer Methode "geworfen" werden können.
transient Kennzeichnung von Attributen, die nicht serialisiert (gespeichert oder übertragen) werden.
try Leitet einen Anweisungsblock ein, in dem eine Ausnahme (Exception) auftreten kann.
void Kennzeichnet Methoden, die keinen Rückgabewert haben.
volatile Kennzeichnet ein Attribut, welches von mehreren Threads gleichzeitig verändert werden kann.
while Leitet eine while-Schleife ein.

 

Konstanten

In Java gibt es auch vordefinierte Konstanten, dazu zählen die Booleschen Konstanten true und false und die sogenannte Nullkonstante null. Die Nullkonstante wird auch als null-Referenz bezeichnet. Jedes komplexe Attribut wird mit der Nullkonstante vorbelegt, wenn es nicht initialisiert, d.h. mit einem Wert vorbelegt wird.
 

Konventionen bei der Vergabe von Namen

Theoretisch kann jede Kombination aus Buchstaben und Zahlen für die Vergabe von Namen von Variablen, Methoden usw. in Java benutzt werden, sofern sie nicht bereits vorbelegt ist. Ein guter Programmierstil beinhaltet jedoch, sich an bestimmte Konventionen zu halten, die die Lesbarkeit und Nachvollziehbarkeit des Codes erhöhen.

1. Variablen und Methoden sollten mit einem Kleinbuchstaben beginnen und aussagekräftig sein.


// Beispiele

String fehlerText;
 
int max_value;
 
public void schreibeRechnung(){
 
}
 
private void zeichne_logo(){
 
}
 

 

2. Namen von Klassen und Interfaces sollten mit einem Großbuchstaben beginnen, anschließend sollten Kleinbuchstaben folgen. Auch hier gilt, dass der Name aussagekräftig gewählt werden sollte.

 
// Beispiel
 
public class Kugelschreiber {
 
}

 

3. Die Namen von Konstanten bestehen ausschließlich aus Großbuchstaben

 
// Beispiel
 
final double PI = 3.14159265359;