» Tutorial / Java Grundlagen / diverse Sprachelemente

Kapitel zwei zeigt Ihnen bereits vorausschauend einige wichtige Konzepte der Java Programmierung, welche für die folgenden Kapitel durchaus von Belang sein werden. So erhalten Sie bereits einen kleinen Vorgeschmack auf kleinere Spracheigenschaften und deren syntaktische Verwendung.


» Schlüsselwörter nach oben «

Java definiert einen festen Satz von Schlüsselwörtern, welche vom Programmierer nicht verwendet werden können. Dabei handelt es sich um interne Befehle zur Ausführung von Anweisungen. Auch von der namentlichen Nutzung in Bezug auf den Einsatz in eigenen Bezeichnern wird abgeraten.

Obwohl die Liste recht viele Einträge enthält, so finden dennoch nicht alle Schlüsselbegriffe eine Verwendung in der aktuellen Spezifikation, sondern sind nur vorgemerkt. Diese haben wir für Sie mit einem Fragezeichen markiert.


  • abstract
  • boolean
  • break
  • byte
  • byvalue (?)
  • case
  • cast (?)
  • catch
  • char
  • class
  • const (?)
  • continue
  • default
  • do
  • double
  • else
  • extends
  • false
  • final
  • finally
  • float
  • for
  • future (?)
  • generic (?)
  • goto (?)
  • if
  • implements
  • import
  • inner (?)
  • instanceof
  • int
  • interface
  • long
  • native
  • new
  • null
  • operator (?)
  • outer (?)
  • package
  • private
  • protected
  • public
  • rest (?)
  • return
  • short
  • static
  • super
  • switch
  • synchronized
  • this
  • throw
  • throws
  • transient
  • true
  • try
  • void
  • volatile
  • while
  • var (?)

» Kommentare nach oben «

Kommentare bilden eine Möglichkeiten, Textstellen in den Quellcode Ihrer Programme einzubinden um spezielle Teile der Implementierung zu erläutern. Diese werden zur Kompilierung unberücksichtigt belassen und haben keinerlei Einfluß auf das Programmverhalten. Je nach Umfang stehen dem Programmierer diverse Varianten von Kommentaren zur Verfügung.


» Zeilenkommentar

Der Zeilenkommentar verläuft jeweils über eine einzige Zeile. Er dient vorallem für kleine Anmerkungen und wird durch zwei Schrägstriche eingeleitet.


// Kommentar
    

» eingebetteter Kommentar

Dieser Typ ist für umfangreiche Anmerkungen geeignet. Er kann über beliebig viele Zeilen verlaufen und wird jeweils durch einen Schrägstrich mit Stern eingeleitet und abgeschlossen.


/* Kommentar */
    

» Kommentar zur Dokumentation

Die letzte Variante hat eine gewisse Sonderstellung. Grundsätzlich wird sie wie ein eingebetteter Kommentar implementiert. Die Besonderheit liegt allerdings in der Verwendung und Erkennung des Kommentars diverser Zusatzprogramme von Java. Das Java - Dokumentationstool erstellt anhand dieser Kommentare die Beschreibungen in der Java - Referenz. Von daher sollten Sie diesen Typ immer dann einsetzen, wenn Sie vorhaben, eine automatisch zu erstellende Referenz ihrer eigenen Klassen anzufertigen. Die Syntax erweitert sich lediglich um einen zusätzlichen Stern.

Auch wenn dieses Tool recht oft zum Einsatz kommt, so wollen wir an dieser Stelle noch nicht darauf eingehen, sondern uns zunächst mit den Grundlagen beschäftigen.


/** Kommentar */
    

» Benennung von Dateien nach oben «

Dieser Abschnitt ist wichtig für das tiefgreifende Verständnis der Themen der Packages. In Java unterliegen die Klassen und Dateien speziellen Regeln, was sie fest bindet.

Zunächst einmal darf es pro Datei nur eine als öffentlich deklarierte Klasse geben, ansonsten ernten Sie einen Fehler. Das hat damit zu tun, dass jede Datei exakt den gleichen Namen haben muss wie die öffentliche Hauptklasse. Letztlich geht es darauf zurück, daß Java aufgrund dieser Namenskonventionen ganze Hierarchien von Packages bauen kann.

Dennoch sind wir nicht vollkommen eingeschränkt. Natürlich besteht die Möglichkeit, weitere Klassen in einer Datei zu implementieren, nur müssen diese vom Namen der Datei verschieden sein und nicht als öffentlich markiert sein.


» Packages nach oben «

Die Java - Standard - Bibliothek bietet dem Programmierer eine hohe Anzahl bereits fertiger Klassen und Funktionalitäten, welche allesamt in diversen Paketen aufgeteilt sind. Dabei handelt es sich um Dateien, die je nach ihrer Kategorie bestimmte Klassen und Schnittstellen beinhalten. Um nun mit Java arbeiten zu können, ist es unerlässlich, sich dieser Klassen zu bedienen.

Konzept eines Packages


» Import externer Pakete

Um dieses Vorgehen zu realisieren gibt es zwei Varianten. Das folgende Beispiel bedient sich einer externen Klasse, indem sie im Quellcode mit ihrer exakten Pfadangabe referenziert wird. Durch das Einbinden externer Pakete werden dessen Klassen der aktuellen Datei bekannt gemacht und ermöglichen es, auf die Klassen des Paketes zugreigen zu können.

Das folgende Beispiel zeigt die sehr umständliche Einbindung fertiger Klassen in eine neue Datei. Die Details spielen hier noch keine Rolle, es soll lediglich den erheblichen Schreibaufwand demonstrieren.


public class MyClass
{
  java.util.Date d = new java.util.Date();
}
    

Bei sehr großen Paketen und der häufigen Verwendung von externen Klassen führt dies allerdings zu einem Overhead.

Um einmal die Schreibweise zu verkürzen und gleichzeitig alle Klassen eines Pakets in der eigenen Datei bekannt zu machen, wird der Import - Befehl verwendet. Er importiert alle Klassen eines Pakets.


import Package.*;
    

Das folgende Beispiel importiert alle Klassen durch die Auflösung eines Klassenpfades.


import java.util.*;
    

Hierbei werden alle Klassen eines Endpaketes importiert. Endpaket deswegen, weil man maximal alle Klassen eines Pakets am Ende einer Hierarchie einbinden kann. Analog kann die gewünschte Klasse auch explizit angegeben werden.


import Package.Klasse;
    

Das folgende Beispiel importiert nur eine Klasse. Somit beziehen sich die verkürzten Schreibweisen auch nur auf diese Klasse.


import java.util.Date;
    

Sofern ein Paket eingebunden ist, verkürzt sich die Verwendung des Namens der Klasse auf ihren tatsächlichen Bezeichner, auch ohne explizite Pfadangabe.


import java.util.*;      
      
public class MyClass
{
  Date d = new Date();
}
    

Man sollte allerdings bedenken, dass wenn man eine einzige Klasse explizit einbindet, sich die eben erworbene verkürzte Anweisung dann auch nur für diese einzelne Klasse gilt. Von daher sollten immer alle Klassen eines Pakets zusammen eingebunden werden. Letztlich spielt es keine Rolle wieviele Klassen bekanntgemacht werden, da sich der Compiler nur der benötigten Klassen bedient und der Quellcode dadurch nicht weiter aufgebläht wird.

» Kodierung der Paketnamen

Ein weiterer wichtiger Aspekt in Verbindung mit der Nutzung von Paketen ist das Prinzip der internen Kodierung. Alle Pakete tragen einen speziellen Namen, welcher sich in ihrer durch jeweils einen Punkt voneinander getrennten Schreibweise ergibt.


java.util.*;
    

Würde man diesen Punkt durch einen Schrägstrich ersetzten, so ergäbe sich der exakte Verzeichnispfad, wo die Datei mit der Klassendefinition auf dem lokalen Datenträger zu finden sei.


java\util\Date
    

Je nach verwendeter Software und Compiler beginnt die Stammsuche nach dem Rootverzeichnis für die entsprechenden Java - Pakete an einer anderen spezifischen Verzeichnisstruktur.

» Erstellung eigener Pakete

Die folgenden Beispiele zeigen die Erstellung eigener Pakete, wie sie dem Java - Standard entsprechen.

Um die eigene Klasse in einer Datei einem Paket zuzuweisen, muss sie lediglich mit der Package - Anweisung am Anfang der Datei mit dem entsprechenden Paketnamen deklariert werden. Dabei können mehrere Dateien ein Paket bilden. Wichtig ist, dass die Deklaration als erste in der Datei auftaucht, und das noch vor den Import - Anweisungen.


package Package;
    

Das folgende Bespiel demonstriert die Erstellung eines eigenen Pakets. Wichtig ist, dass bereits in der ersten Zeile die entsprechende Anweisung erfolgt, da es sonst zu Fehlern kommen kann.


package Tool;

public class MyClass
{  

}    
    

Die Verzeichnisstruktur wird wiederum anhand des Paketnamens aufgelöst. In unserem Fall der folgende.


\Tool
    

Natürlich können auch die eigenen Pakete weiter verschachtelt werden. Des weiteren darf es pro Datei nur eine öffentliche Klasse geben, die den selben Namen wie die aktuelle Datei tragen muss. Von dieser wird dann im entsprechenden Verzeichnis eine Datei gespeichert.


package Package.Package;
    

Das folgende Bespiel demonstriert die Erstellung eines verschachtelten Pakets. Hier wird die Kategorisierung durch die Punkte zwischen den Packages und der letzten benannten Klasse erreicht.


package Tool.Network;
    

Die Verzeichnisstruktur sähe wie folgt aus.


\Tool\Network
    

Die von uns als öffentlich deklatrierte Klasse würde dann das Ende der Verzeichnishierarchie bilden. Da wir im folgenden Beispiel eine öffentliche Klasse definieren, bildet diese eine entsprechende Klasse im neuen Package. Dabei trägt die angelegte Datei den öffentlichen Klassennamen.


package Tool.Network;
      
public class MyClass
{
  
}
    

Hier nun der vollständige Pfad samt Klassendatei.


\Tool\Network\MyClass.java
    

Man sollte immer bedenken, dass es nur eine öffentliche Klasse pro Datei geben kann und diese des weiteren den selben Dateinamen zu tragen hat. Ansonsten sind zwar weitere Klassendefinitionen erlaubt, dürfen jedoch nicht als öffentlich markiert werden. Diese werden in einer extra Datei gespeichert.

» Default Pakete

Sofern eigene Klassen keiner Pakethierarchie zugewiesen werden, befinden sie sich automatisch in einem Default - Paket.

Alle zutreffenden Klassen werden in der Regel in keiner Struktur, sondern im aktuellen oder einem Unterverzeichnis des Programms gespeichert. Je nach Ordnertiefe lassen sich so also beliebig viele Default - Pakete erzeugen. Die Klassen dieses Pakettyps können auch verwendet werden, wenn sie nicht explizit eingebunden wurden.


» Escape Sequenzen nach oben «

In nahezu allen Programmiersprachen ist die Nutzung diverser Sonderzeichen erforderlich, die durch spezielle Zeichenfolgen ausgedrückt werden. Diese werden als Escape Sequenzen bezeichnet. Die folgende Tabelle beinhaltet eine Liste der gängigsten Typen.

Zeichen
 
\b
\t
\n
\f
\r
 
\"
\'
\\
 
\nnn
\uxxxx

Diese Kurzformen können in allen Strings verwendet werden. Die letzten beiden Varianten geben dabei ein bestimmtes Zeichen anhand seiner oktalen oder hexadezimalen Kodierung an.


public class MyClass
{
  public static void main(String[] args)
  {
    System.out.print("ProgrammersBase.NET \u0021");
  }
}
    

ProgrammersBase.NET !
    

« Kapitel Kapitelübersicht nach oben Kapitel »