
Sprechen Sie Java?
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Person
Content
- Intro
- Vorwort
- Vorwort zur 5. Auflage
- Vorwort zur 4. Auflage
- Vorwort zur 3. Auflage
- Vorwort zur 2. Auflage
- Vorwort zur 1. Auflage
- Inhaltsverzeichnis
- 1 Grundlagen
- 1.1 Daten und Befehle
- Abb. 1.1 Speicherzellen
- Abb. 1.2 Entstehungsschritte eines Programms
- 1.2 Algorithmen
- 1.3 Variablen
- Abb. 1.3 Variablen als benannte Behälter
- Abb. 1.4 Variablen und Werte haben einen Datentyp (Form)
- 1.4 Anweisungen
- 1.4.1 Wertzuweisung
- 1.4.2 Folge (Sequenz)
- Abb. 1.5 Ablaufdiagramm einer Sequenz
- 1.4.3 Verzweigung (Selektion, Auswahl)
- Abb. 1.6 Ablaufdiagramm einer Verzweigung
- 1.4.4 Schleife (Iteration, Wiederholung)
- Abb. 1.7 Ablaufdiagramm einer Schleife
- Abb. 1.8 Schleife als Ablaufdiagramm (andere Darstellungsform)
- 1.5 Beispiele für Algorithmen
- 1.5.1 Vertauschen zweier Variableninhalte
- Abb. 1.9 Algorithmus Swap
- 1.5.2 Maximum dreier Zahlen berechnen
- Abb. 1.10 Algorithmus Max
- 1.5.3 Anzahl der Ziffern einer Zahl bestimmen
- Abb. 1.11 Algorithmus NumDigits
- 1.5.4 Größter gemeinsamer Teiler zweier Zahlen
- Abb. 1.12 Euklidischer Algorithmus
- 1.5.5 Quadratwurzel von x berechnen
- Abb. 1.13 Algorithmus SquareRoot
- 1.6 Beschreibung von Programmiersprachen
- 1.6.1 Syntax
- 1.6.2 Semantik
- 1.6.3 Grammatik
- 2 Einfache Programme
- 2.1 Grundsymbole
- Namen
- Schlüsselwörter
- Zahlen
- Zeichen
- Zeichenketten (Strings)
- 2.2 Variablendeklarationen
- Datentypen
- Standardtypen für ganze Zahlen
- Initialisierung von Variablen
- Kommentare
- 2.3 Zuweisungen
- Beispiele
- 2.4 Arithmetische Ausdrücke
- Binäre Operatoren
- Abb. 2.1 Auswirkungen einer Typkonversion
- Unäre Operatoren
- Inkrement- und Dekrement-Operatoren
- Multiplikation und Division mittels Shift-Operationen
- Zuweisungsoperatoren
- 2.5 Ein-/Ausgabe
- Eingabe
- Ausgabe
- 2.6 Grundstruktur von Java-Programmen
- Beispiel
- 2.7 Konstantendeklarationen
- 2.8 Namenswahl
- 3 Verzweigungen
- 3.1 if-Anweisung
- Einrückungen
- Anweisungsblöcke
- Dangling else
- 3.2 Boolesche Ausdrücke
- Vergleichsoperatoren
- Datentyp boolean
- Zusammengesetzte Vergleiche
- Kurzschlussauswertung
- Bitweise logische Verknüpfungen
- Vorrangregeln
- 3.3 switch-Anweisung
- Abb. 3.1 Eine vom Compiler erzeugte Tabelle für eine switch-Anweisung
- 3.4 Assertionen bei Verzweigungen
- Negation zusammengesetzter Ausdrücke
- assert-Anweisung
- 3.5 Effizienzüberlegungen
- 4 Schleifen
- 4.1 while-Anweisung (Abweisschleife)
- Beispiel
- 4.2 Assertionen bei Schleifen
- Schleifeninvariante
- 4.3 do-while-Anweisung (Durchlaufschleife)
- 4.4 for-Anweisung (Zählschleife)
- Beispiel: Ausgabe einer n x n-Multiplikationstabelle
- 4.5 Abbruch von Schleifen
- 4.6 Vergleich der Schleifenarten
- Abb. 4.1 Gegenüberstellung der verschiedenen Schleifenarten
- Abb. 4.2 Mögliche Transformationen von Schleifenarten
- 5 Gleitkommazahlen
- Datentypen float und double
- Zuweisungskompatibilität
- Gleitkommakonstanten
- Typregeln in Ausdrücken
- Geschwindigkeitsüberlegungen
- 6 Methoden
- 6.1 Parameterlose Methoden
- Abb. 6.1 Funktionsweise von Methodenaufrufen
- Namenskonventionen für Methoden
- 6.2 Parameter
- Formale und aktuelle Parameter
- Parameterübergabe
- 6.3 Funktionen
- Beispiel: Berechnung des ganzzahligen Zweierlogarithmus einer Zahl
- return-Anweisung in Prozeduren
- 6.4 Lokale und globale Namen
- Lokale Variablen
- Globale Variablen
- Lokale Konstanten
- Beispiel: Summe einer Zahlenfolge
- Nebeneffekte von Funktionen
- Wann verwendet man lokale, wann globale Variablen?
- 6.5 Sichtbarkeitsbereich von Variablen
- Abb. 6.2 Sichtbarkeitsbereich von Variablen
- 6.6 Lebensdauer von Variablen
- Abb. 6.3 Lebensdauer und Sichtbarkeit von Variablen (helle Kästchen)
- die Nummern bedeuten die Schnappschüsse 1-6 laut obigem Programmcode)
- 6.7 Überladen von Methoden
- 6.8 Beispiele für Methoden
- 6.9 Anwendungsgebiete von Methoden
- 7 Arrays
- 7.1 Eindimensionale Arrays
- Abb. 7.1 Ein Array a und seine Elemente
- Deklaration
- Erzeugung von Arrays
- Abb. 7.2 Eine Arrayvariable enthält einen Zeiger auf ein Array
- Benutzung von Arrays
- Arrayzuweisung
- Freigabe von Arrayspeicher
- Initialisieren von Arrays
- Beispiel: Sequenzielles Suchen eines Elements in einem Array
- Abb. 7.3 Gewünschtes Ergebnis der Suchfunktion
- Beispiel: Binäres Suchen eines Elements x in einem Array
- Beispiel: Primzahlenberechnung mit dem Sieb des Erathostenes
- Beispiel: Monatstage berechnen
- 7.2 Mehrdimensionale Arrays
- Abb. 7.4 Mehrdimensionale Arrays
- Abb. 7.5 Eine Matrix als zweidimensionales Array
- Deklaration und Benutzung
- Abb. 7.6 Zugriff auf das Element a[i][j]
- Abb. 7.7 Initialisiertes Array aus vier Zeilen und drei Spalten
- Beispiel: Matrixmultiplikation
- Abb. 7.8 Matrixmultiplikation: c[0][0] ergibt sich aus Zeile 0 von a mal Spalte 0 von b
- 7.3 Iterator-Form der for-Anweisung
- 7.4 Methoden mit variabler Parameteranzahl
- 8 Zeichen
- 8.1 Zeichenkonstanten und Zeichencodes
- ASCII
- Unicode
- 8.2 Zeichenvariablen
- Abb. 8.1 Einordnung von char in die Typhierarchie von Java
- Ein-/Ausgabe von Zeichen
- Zeichenarrays
- Beispiel: Zeichenkettensuche
- Abb. 8.2 Das Muster pat kommt im Text an der Stelle 8 und 30 vor
- Beispiel: Implementierung von readInt()
- 8.3 Standardfunktionen
- 9 Strings
- 9.1 Stringkonstanten
- 9.2 Datentyp String
- 9.3 Stringvergleiche
- 9.4 Stringoperationen
- 9.5 Aufbauen von Strings
- Erzeugen von Strings aus einer Stringkonstanten
- Erzeugen von Strings aus einem char-Array
- Erzeugen von Strings aus einem StringBuilder
- 9.6 Stringkonversionen
- 9.7 Beispiele
- Beispiel: Manipulation von Dateipfaden
- Beispiel: Wörter aus einem Text herauslösen
- Beispiel: Zahl in einen String konvertieren
- 10 Klassen
- 10.1 Deklaration und Verwendung
- Deklaration von Klassen
- Verwendung von Klassen
- Abb. 10.1 Date-Variable als Zeiger auf ein Date-Objekt
- Erzeugung von Objekten
- Freigabe von Objekten
- Zuweisungen zwischen Objektvariablen
- Zuweisungskompatibilität
- Vergleiche
- Klassen versus Arrays
- Beispiel: Datenstruktur für Linien
- Abb. 10.2 Ein Line-Objekt bestehend aus zwei Point-Objekten
- 10.2 Methoden mit mehreren Rückgabewerten
- Beispiel: Umrechnung von Sekunden auf Stunden, Minuten und Sekunden
- 10.3 Kombination von Klassen und Arrays
- Ein Array aus Zeilenobjekten
- Abb. 10.3 Telefonbuch als Array von Zeilenobjekten
- Ein Objekt bestehend aus zwei Spaltenarrays
- Abb. 10.4 Telefonbuch als Objekt bestehend aus zwei Spaltenarrays
- Eintragen und Suchen von Personen im Telefonbuch
- 11 Objektorientierung
- 11.1 Methoden in Klassen
- Aufruf von Methoden
- Abb. 11.1 Parameterübergabe beim Aufruf einer Methode
- Grafische Notation für Klassen
- Abb. 11.2 Klassendiagramm für Fraction
- 11.2 Konstruktoren
- 11.3 Statische und objektbezogene Felder und Methoden
- Zugriff auf Klassenfelder und Klassenmethoden
- Klassen als Hauptprogramme
- Zusammenfassung: statische und objektbezogene Komponenten
- 11.4 Beispiel: Klasse PhoneBook
- Abb. 11.3 Klassendiagramm für PhoneBook und Entry
- 11.5 Beispiel: Klasse Stack
- Abb. 11.4 Beispiel für die Benutzung eines Kellers
- Abb. 11.5 Klassendiagramm für Stack
- 11.6 Beispiel: Klasse Queue
- Abb. 11.6 Arbeitsweise einer Schlange
- Abb. 11.7 Schlange als Array
- Abb. 11.8 Schlange nach einigen put()- und get()-Operationen
- Abb. 11.9 Belegter Teil des Arrays überschreitet das Arrayende
- Abb. 11.10 Darstellung einer Schlange als zyklisches Array
- Abb. 11.11 Klassendiagramm für Queue
- 12 Dynamische Datenstrukturen
- Abb. 12.1 Typische dynamische Datenstrukturen
- 12.1 Verketten von Knoten
- 12.2 Unsortierte Listen
- Abb. 12.2 Klassendiagramm für List und Node
- Einfügen von Elementen
- Abb. 12.3 Arbeitsweise von append
- Abb. 12.4 Arbeitsweise von insert
- Suchen von Elementen
- Löschen von Elementen
- 12.3 Sortierte Listen
- Einfügen von Elementen
- Suchen von Elementen
- 12.4 Stack als verkettete Liste
- Abb. 12.5 Keller als verkettete Liste
- Abb. 12.6 Klassendiagramm für Stack und Node
- 12.5 Queue als verkettete Liste
- Abb. 12.7 Schlange als verkettete Liste von Knoten
- Abb. 12.8 Klassendiagramm für Queue und Node
- 13 Vererbung
- Abb. 13.1 Klassifikation am Beispiel der Tierarten
- 13.1 Klassifikation
- Abb. 13.2 Klassenhierarchie für Artikel einer Buchhandlung (in UML-Notation)
- Überschreiben von Methoden
- super-Aufrufe
- 13.2 Kompatibilität zwischen Ober- und Unterklasse
- Abb. 13.3 Mengendiagramm zur Darstellung der ist-Beziehung zw. Unter- und Oberklasse
- Zuweisungen zwischen Objekten
- 13.3 Dynamische Bindung
- Beispiel: Tierfarm
- Abb. 13.4 Hierarchie von Tierklassen
- Abb. 13.5 Liste von Tieren auf einer Farm
- 13.4 Abstrakte Klassen
- Abb. 13.6 Einfaches Framework mit Animal als Steckplatz
- 13.5 Interfaces
- Abb. 13.7 TextBox, File und Window implementieren alle das Interface Writer
- 13.6 Anonyme Klassen
- 13.7 Wrapper-Klassen und Boxing
- 13.8 Weitere Themen der objektorientierten Programmierung
- 14 Enumerationstypen
- Enumerationstypen als Klassen
- 15 Generizität
- 15.1 Generische Typen
- Rohtypen und Zuweisungskompatibilität
- Generische Typen und Arrays
- 15.2 Eingeschränkte Typparameter
- 15.3 Generizität und Vererbung
- Zuweisungskompatibilität
- Überschreiben von Methoden
- Laufzeittypprüfungen und Typkonversionen
- 15.4 Wildcard-Typen
- Eingeschränkte Wildcard-Typen
- 15.5 Generische Methoden
- 16 Rekursion
- Abb. 16.1 Visualisierung der rekursiven Berechnung von fact(4)
- Rekursive versus iterative Lösung
- Direkte versus indirekte Rekursion
- Beispiel: Rekursive Lösung des binären Suchens
- Beispiel: Größter gemeinsamer Teiler nach Euklid
- Beispiel: Suche eines Wegs durch ein Labyrinth
- Abb. 16.2 Labyrinth aus freien (weißen) und blockierten (schwarzen) Feldern
- Abb. 16.3 Betretbare Nachbarfelder von maze[i][j]
- Abb. 16.4 Besuchsreihenfolge von canExit ausgehend von maze[0][0] (Ausschnitt)
- 17 Schrittweise Verfeinerung
- Abb. 17.1 Abhängigkeit der Komplexität eines Programms von seiner Größe
- Beispiel: Häufigkeitszählung von Wörtern in einem Text
- Zerlegung der Gesamtaufgabe
- Implementierung der Gesamtaufgabe mittels der Teilaufgaben
- Verfeinerung von readWord()
- Entwurf der Worttabelle
- Verfeinerung von print
- Abb. 17.2 Hierarchische Zerlegung der Wortzählung
- 18 Pakete
- 18.1 Anlegen von Paketen
- Abb. 18.1 Aufnahme der Klassen Circle und Rectangle in das Paket graphics
- Abb. 18.2 Ein Paket als Behälter für Klassen (UML-Notation)
- 18.2 Export und Import von Namen
- Regel 1: Was zu einem Paket gehört, ist außerhalb des Pakets unsichtbar
- Regel 2: Namen können von einem Paket exportiert werden
- Regel 3: Exportierte Klassen können in anderen Paketen importiert werden
- Import statischer Felder und Methoden
- 18.3 Pakete und Verzeichnisse
- Abb. 18.3 Klassen und Pakete sowie ihre Abbildung auf Dateien und Verzeichnisse
- Hierarchie von Paketen
- Abb. 18.4 Eine Pakethierarchie und ihre Abbildung auf Verzeichnisse
- Pakete und das Java Development Kit JDK
- Weltweit eindeutige Paketnamen
- 18.4 Information Hiding
- Abb. 18.5 Datenabstraktion durch eine Klasse
- Beispiel: Information Hiding in einer Klasse Stack
- Abb. 18.6 Stack als Klasse mit Datenabstraktion
- Abb. 18.7 Auswechseln der Implementierung im Baustein Stack
- Klassenschnittstelle
- Abb. 18.8 Klassendiagramm als Dokumentation von Stack
- 18.5 Abstrakte Datentypen und abstrakte Datenstrukturen
- 18.5.1 Abstrakter Datentyp (ADT)
- 18.5.2 Abstrakte Datenstruktur (ADS)
- 19 Ausnahmebehandlung
- 19.1 Fehlercodes
- 19.2 Konzepte der Ausnahmebehandlung
- Abb. 19.1 Grundsätzlicher Ablauf einer Ausnahmebehandlung
- 19.3 Arten von Ausnahmen in Java
- Klasse Exception
- Abb. 19.2 Klassenhierarchie der Ausnahmen in Java
- Eigene Ausnahmeklassen
- 19.4 Ausnahmebehandler
- 19.5 Auslösen einer Ausnahme
- Abb. 19.3 Suche eines Ausnahmebehandlers beim Auslösen einer Ausnahme in m3
- 19.6 finally-Klausel
- Abb. 19.4 Wirkungsweise einer finally-Klausel
- 19.7 Spezifikation von Ausnahmen im Methodenkopf
- 19.8 Automatisches Ressourcenmanagement
- 20 Threads
- Abb. 20.1 Drei Threads, die verzahnt ablaufen
- 20.1 Erzeugung von Threads
- 20.2 Synchronisation von Threads
- Abb. 20.2 Zwei Threads rufen gleichzeitig deposit und withdraw auf
- Abb. 20.3 Ein GAU im kritischen Bereich zweier Threads
- 20.3 wait und notify
- 21 Lambda-Ausdrücke
- Funktionsinterfaces
- Einfache Lambda-Ausdrücke
- Lambda-Ausdrücke mit mehreren Parametern
- Lambda-Ausdrücke mit Anweisungsteil
- Zugriff auf Namen in Lambda-Ausdrücken
- Methodenreferenzen
- Default-Methoden
- 22 Annotationen
- 22.1 Verwendung
- 22.2 Selbstdefinierte Annotationen
- 23 Auszug aus der Java-Klassenbibliothek
- 23.1 Collection-Typen
- Abb. 23.1 Auszug aus der Collection-Hierarchie
- 23.1.1 Listen
- Iteratoren
- Iterieren mit einer for-Schleife
- 23.1.2 Mengen
- Zahlenmengen
- 23.1.3 Abbildungen
- 23.2 Datenströme
- 23.2.1 Byteströme
- Abb. 23.2 Auszug der Klasse OutputStream und ihrer Unterklassen
- Abb. 23.3 Auszug der Klasse InputStream und ihrer Unterklassen
- 23.2.2 Zeichenströme
- Abb. 23.4 Auszug der Klasse Writer und ihrer Unterklassen
- Abb. 23.5 Auszug der Klasse Reader und ihrer Unterklassen
- 23.2.3 Filterströme
- Abb. 23.6 Filterströme vor einem FileOutputStream
- Abb. 23.7 Byte-Filterströme
- PrintStream
- 23.3 Grafische Benutzeroberflächen
- 23.3.1 GUI-Komponenten und Layout-Manager
- Abb. 23.8 Beispiele für GUI-Komponenten in Swing
- Abb. 23.9 Anordnung von Buttons mit einem FlowLayout-Manager
- Abb. 23.10 Anordnung von Textfeldern und Buttons mit einem GridLayout-Manager
- 23.3.2 Ereignisverarbeitung
- 23.3.3 Beispiel
- Abb. 23.11 Benutzeroberfläche eines einfachen Taschenrechners
- 24 Ausblick
- Die Sprache Java
- Die Java-Klassenbibliothek
- Web-Programmierung
- Komponentenbasierte Programmierung
- Verteilte Systeme
- Datenbankanschluss
- Embedded Systems
- Sicherheit
- A Klassen für die Ein-/Ausgabe
- A.1 Eingabeklasse In
- Eingabe von der Tastatur
- Eingabe von einer Datei
- Ende des Eingabestroms
- Konstanten
- Methoden
- A.2 Ausgabeklasse Out
- Methoden
- B Java-Grammatik
- Deklarationen
- Anweisungen
- Ausdrücke
- Lexikalische Symbole
- C Programmierstil
- C.1 Namensgebung
- C.2 Kommentare
- C.3 Einrückungen
- Anweisungen
- Klassen
- Methoden
- C.4 Programmkomplexität
- C.5 Testhilfen
- Hilfsdrucke
- Plausibilitätsprüfungen
- Literatur
- [ADW03]
- [AGH05]
- [CWH01]
- [EJB]
- [Flan04]
- [Fowl03]
- [FS99]
- [GH10]
- [GHJV10]
- [GJSBB13]
- [HB03]
- [HKKR05]
- [Holu00]
- [JavaBeans]
- [JavaBuch]
- [Javadoc]
- [JDBC]
- [JDK]
- [Kali09]
- [Oppl09]
- [RB10]
- [Sedg02]
- [SS03]
- [Swing]
- [Tula08]
- [Walr04]
- [Win05]
- Index
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.