Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Äußere.innere Klassen
8 Besondere Klassen der Java SE
9 Generics<T>
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Einführung in die nebenläufige Programmierung
13 Einführung in Datenstrukturen und Algorithmen
14 Einführung in grafische Oberflächen
15 Einführung in Dateien und Datenströme
16 Einführung in die <XML>-Verarbeitung mit Java
17 Einführung ins Datenbankmanagement mit JDBC
18 Bits und Bytes und Mathematisches
19 Die Werkzeuge des JDK
A Die Klassenbibliothek
Stichwort

Download:
- Aufgaben, ca. 1,1 MB
- Programme, ca. 12,8 MB

Buch bestellen
Ihre Meinung?

Spacer
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
Galileo Computing
1308 S., 10., aktualisierte Auflage, geb., mit DVD
ca. 49,90 Euro, ISBN 978-3-8362-1802-3
Pfeil 3 Klassen und Objekte
Pfeil 3.1 Objektorientierte Programmierung (OOP)
Pfeil 3.1.1 Warum überhaupt OOP?
Pfeil 3.1.2 Denk ich an Java, denk ich an Wiederverwendbarkeit
Pfeil 3.2 Eigenschaften einer Klasse
Pfeil 3.2.1 Die Klasse Point
Pfeil 3.3 Die UML (Unified Modeling Language) *
Pfeil 3.3.1 Hintergrund und Geschichte der UML
Pfeil 3.3.2 Wichtige Diagrammtypen der UML
Pfeil 3.3.3 UML-Werkzeuge
Pfeil 3.4 Neue Objekte erzeugen
Pfeil 3.4.1 Ein Exemplar einer Klasse mit dem new-Operator anlegen
Pfeil 3.4.2 Garbage-Collector (GC) – Es ist dann mal weg
Pfeil 3.4.3 Deklarieren von Referenzvariablen
Pfeil 3.4.4 Zugriff auf Objektattribute und -methoden mit dem ».«
Pfeil 3.4.5 Überblick über Point-Methoden
Pfeil 3.4.6 Konstruktoren nutzen
Pfeil 3.5 ZZZZZnake
Pfeil 3.6 Kompilationseinheiten, Imports und Pakete schnüren
Pfeil 3.6.1 Volle Qualifizierung und import-Deklaration
Pfeil 3.6.2 Mit import p1.p2.* alle Typen eines Pakets erreichen
Pfeil 3.6.3 Hierarchische Strukturen über Pakete
Pfeil 3.6.4 Die package-Deklaration
Pfeil 3.6.5 Unbenanntes Paket (default package)
Pfeil 3.6.6 Klassen mit gleichen Namen in unterschiedlichen Paketen *
Pfeil 3.6.7 Compilationseinheit (Compilation Unit)
Pfeil 3.6.8 Statischer Import *
Pfeil 3.6.9 Eine Verzeichnisstruktur für eigene Projekte *
Pfeil 3.7 Mit Referenzen arbeiten, Identität und Gleichheit
Pfeil 3.7.1 Die null-Referenz
Pfeil 3.7.2 null-Referenzen testen
Pfeil 3.7.3 Zuweisungen bei Referenzen
Pfeil 3.7.4 Methoden mit nicht-primitiven Parametern
Pfeil 3.7.5 Identität von Objekten
Pfeil 3.7.6 Gleichheit und die Methode equals()
Pfeil 3.8 Arrays
Pfeil 3.8.1 Grundbestandteile
Pfeil 3.8.2 Deklaration von Arrays
Pfeil 3.8.3 Arrays mit Inhalt
Pfeil 3.8.4 Die Länge eines Arrays über das Attribut length auslesen
Pfeil 3.8.5 Zugriff auf die Elemente über den Index
Pfeil 3.8.6 Array-Objekte mit new erzeugen
Pfeil 3.8.7 Typische Feldfehler
Pfeil 3.8.8 Feld-Objekte als Parametertyp
Pfeil 3.8.9 Vorinitialisierte Arrays
Pfeil 3.8.10 Die erweiterte for-Schleife
Pfeil 3.8.11 Arrays mit nicht-primitiven Elementen
Pfeil 3.8.12 Mehrdimensionale Arrays *
Pfeil 3.8.13 Nichtrechteckige Arrays *
Pfeil 3.8.14 Die Wahrheit über die Array-Initialisierung *
Pfeil 3.8.15 Mehrere Rückgabewerte *
Pfeil 3.8.16 Methode mit variabler Argumentanzahl (Vararg)
Pfeil 3.8.17 Klonen kann sich lohnen – Arrays vermehren *
Pfeil 3.8.18 Feldinhalte kopieren *
Pfeil 3.8.19 Die Klasse Arrays zum Vergleichen, Füllen, Suchen, Sortieren nutzen
Pfeil 3.8.20 Eine lange Schlange
Pfeil 3.9 Der Einstiegspunkt für das Laufzeitsystem: main()
Pfeil 3.9.1 Korrekte Deklaration der Startmethode
Pfeil 3.9.2 Kommandozeilenargumente verarbeiten
Pfeil 3.9.3 Der Rückgabetyp von main() und System.exit() *
Pfeil 3.10 Annotationen und Generics
Pfeil 3.10.1 Generics
Pfeil 3.10.2 Annotationen
Pfeil 3.10.3 Eigene Metadaten setzen
Pfeil 3.10.4 Annotationstypen @Override, @Deprecated, @SuppressWarnings
Pfeil 3.11 Zum Weiterlesen

Rheinwerk Computing - Zum Seitenanfang

3.9 Der Einstiegspunkt für das Laufzeitsystem: main()Zur nächsten Überschrift

In Java-Klassen gibt es eine besondere statische Methode main(), die das Laufzeitsystem in der angegebenen Hauptklasse (oder Startklasse) des Programms aufruft.


Rheinwerk Computing - Zum Seitenanfang

3.9.1 Korrekte Deklaration der StartmethodeZur nächsten ÜberschriftZur vorigen Überschrift

Damit die JVM ein Java-Programm starten kann, muss es eine besondere Methode main() geben. Da die Groß-/Kleinschreibung in Java relevant ist, muss sie main() lauten, und nicht Main() oder MAIN(). Die Sichtbarkeit ist auf public gesetzt, und die Methode muss statisch sein, da die JVM die Methode auch ohne Exemplar der Klasse aufrufen möchte. Als Parameter wird ein Array von String-Objekten angenommen. Darin sind die auf der Kommandozeile übergebenen Parameter abgelegt.

Zwei Varianten gibt es zur Deklaration:

  • public static void main( String[] args )
  • public static void main( String... args )

Die zweite funktioniert seit Java 5 und nutzt variable Argumentlisten, ist aber mit der ersten Version gleich.

Falsche Deklarationen

Nur eine Methode mit dem Kopf public static void main(String[] args) wird als Startmethode akzeptiert. Ein Methodenkopf wie public static void Main(String[] args) ist durchaus gültig, aber eben keiner, der die JVM zum Start ansteuern würde. Findet die JVM die Startmethode nicht, gibt sie eine Fehlermeldung aus:

Fehler: Hauptmethode in Klasse ABC nicht gefunden. Definieren Sie die Hauptmethode als:
public static void main(String[] args)
Hinweis

Im Gegensatz zu C(++) steht im ersten Element des Argument-Arrays mit Index 0 nicht der Programmname, also der Name der Hauptklasse, sondern bereits der erste Programmparameter der Kommandozeile.


Rheinwerk Computing - Zum Seitenanfang

3.9.2 Kommandozeilenargumente verarbeitenZur nächsten ÜberschriftZur vorigen Überschrift

Eine besondere Variable für die Anzahl der übergebenen Argumente der Kommandozeile ist nicht erforderlich, weil das String-Array-Objekt uns diese Information über length mitteilt. Um etwa alle übergebenen Argumente über die erweiterte for-Schleife auszugeben, schreiben wir:

Listing 3.34: LovesGoldenHamster.java, main()

public static void main( String[] args )
{
if ( args.length == 0 )
System.out.println( "Was!! Keiner liebt kleine Hamster?" );
else
{
System.out.print( "Liebt kleine Hamster: " );

for ( String s : args )
System.out.format( "%s ", s );

System.out.println();
}
}

Das Programm lässt sich auf der Kommandozeile wie folgt aufrufen:

$ java LovesGoldenHamster Raphael Perly Mirjam Paul
Bibliothek

Zum Parsen der Kommandozeilenargumente bietet sich zum Beispiel die Bibliothek Jakarta Commons CLI (http://jakarta.apache.org/commons/cli/) an.


Rheinwerk Computing - Zum Seitenanfang

3.9.3 Der Rückgabetyp von main() und System.exit() *Zur vorigen Überschrift

Der Rückgabetyp void der Startmethode main() ist sicherlich diskussionswürdig, da diejenigen, die die Sprache entworfen haben, auch hätten fordern können, dass ein Programm immer einen Statuscode an das aufrufende Programm zurückgibt. Für diese Lösung haben sie sich aber nicht entschieden, da Java-Programme in der Regel nur minimal mit dem umgebenden Betriebssystem interagieren sollen und echte Plattformunabhängigkeit gefordert ist, etwa bei Java in Handys.

Für die Fälle, in denen ein Statuscode zurückgeliefert werden soll, steht die statische Methode System.exit(status) zur Verfügung; sie beendet eine Applikation. Das an exit() übergebene Argument nennt sich Statuswert (engl. exit status) und wird an die Kommandozeile zurückgegeben. Der Wert ist für Skriptprogramme wichtig, da sie über diesen Rückgabewert auf das Gelingen oder Misslingen des Java-Programms reagieren können. Ein Wert von 0 zeigt per Definition das Gelingen an, ein Wert ungleich 0 einen Fehler. Der Wertebereich sollte sich zwischen 0 und 255 bewegen. Auf der Unix-Kommandozeile ist der Rückgabewert eines Programms unter $? verfügbar und in der Windows cmd.exe unter %ERRORLEVEL%, einer Art dynamischer Umgebungsvariable.

Dazu ein Beispiel. Ein Java-Programm liefert den Statuswert 42:

Listing 3.35: SystemExitDemo.java

public class SystemExitDemo
{
public static void main( String[] args )
{
System.exit( 42 );
}
}

Das folgende Shell-Programm gibt den Statuswert zunächst aus und zeigt zudem, welche Fallunterscheidung die Shell für Statuswerte bietet:

Listing 3.36: showreturn.bat

@echo off
java SystemExitDemo
echo %ERRORLEVEL%
if errorlevel 10 (
echo Exit-Code ist über 10, genau %ERRORLEVEL%
)

Die JVM startet das Java-Programm und beendet es mit System.exit(), was zu einer Belegung der Variable %ERRORLEVEL% mit 42 führt. Das Skript gibt zunächst die Belegung der Variablen aus. Die Windows Shell besitzt mit if errorlevel Wert eine spezielle Variante für Fallunterscheidungen mit Exit-Codes, die genau dann greift, wenn der aktuelle Exit-Code größer oder gleich dem angegebenen Wert ist. Das heißt in unserem Beispiel: Es gibt eine Ausgabe, wenn der Exit-Code größer 10 ist, und mit 42 ist er das. Daher folgt die Ausgabe vom kleinen Skript:

>showreturn.bat
42
Error-Level ist über 10, genau 42

Es ist wichtig zu bedenken, dass %ERRORLEVEL% natürlich überschrieben wird, wenn Befehle folgen. So gibt Folgendes nur 0 aus, da dir erfolgreich abgeschlossen werden kann und dir nach der Durchführung den Exit-Code auf 0 setzt:

java SystemExitDemo
dir
echo %ERRORLEVEL%

Liegen zwischen dem Aufruf der JVM und der Auswertung der Variablen Aufrufe, die den Exit-Code verändern, ist es sinnvoll, den Inhalt von %ERRORLEVEL% zwischenzuspeichern, etwa so:

Listing 3.37: showreturn2.bat

@echo off
java SystemExitDemo
SET EXITCODE=%ERRORLEVEL%
dir > NUL:
echo %ERRORLEVEL%
echo %EXITCODE%

Die Ausgabe ist dann:

0
42
final class java.lang.System
  • static void exit(int status)
    Beendet die aktuelle JVM und gibt das Argument der Methode als Statuswert zurück. Ein Wert ungleich null zeigt einen Fehler an. Also ist der Rückgabewert beim normalen fehlerfreien Verlassen null. Eine SecurityException wird ausgelöst, falls der aktuelle SecurityManager dem aufrufenden Code nicht erlaubt, die JVM zu beenden. Das gilt insbesondere bei Applets in einem Webbrowser.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Java ist auch eine Insel





Java ist auch eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de