Beruflich Dokumente
Kultur Dokumente
Grundlagen Programmierung
Internet: www.herdt.com
Alle Rechte vorbehalten. Kein Teil des Werkes darf in
irgendeiner Form (Druck, Fotokopie, Mikrofilm oder
einem anderen Verfahren) ohne schriftliche Genehmigung
des Herausgebers reproduziert oder unter Verwendung
elektronischer Systeme verarbeitet, vervielfltigt oder
verbreitet werden.
Diese Unterlage wurde mit groer Sorgfalt erstellt und
geprft. Trotzdem knnen Fehler nicht vollkommen ausgeschlossen werden. Verlag, Herausgeber und Autoren
knnen fr fehlerhafte Angaben und deren Folgen weder
eine juristische Verantwortung noch irgendeine Haftung
bernehmen.
Die Bildungsmedien des HERDT-Verlags enthalten Links
bzw. Verweise auf Internetseiten anderer Anbieter. Auf
Inhalt und Gestaltung dieser Angebote hat der HERDTVerlag keinerlei Einfluss. Hierfr sind alleine die jeweiligen Anbieter verantwortlich.
Diese Schulungsunterlage wurde auf 100 % chlorfrei
gebleichtem Papier (TCF) gedruckt.
JAV5
Basiswissen
1 Einfhrung in Java...................................4
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
1.1
1.2
1.3
2.1
2.2
2.3
2.4
2.5
2.6
3 Grundlegende Sprachelemente............16
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
4 Kontrollstrukturen.................................36
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
Objektorientierung
Kontrollstrukturen einsetzen....................... 36
if-Anweisung............................................... 37
if-else-Anweisung..................................... 39
switch-Anweisung ...................................... 41
Schleifen........................................................ 43
while-Anweisung ........................................ 43
do-while-Anweisung................................... 44
for-Anweisung ............................................ 46
Weitere Kontrollstrukturen ......................... 48
Schnellbersicht............................................ 49
bung ........................................................... 49
Klassen .......................................................... 50
Die Attribute einer Klasse ............................ 51
Objekte erzeugen......................................... 52
Methoden - die Funktionalitt der
Klassen .......................................................... 55
Methoden mit Parametern erstellen ........... 58
Methoden mit Rckgabewert definieren.... 59
Methoden berladen ................................... 60
Statische Variablen und Methoden ............. 61
bung ........................................................... 63
Kapselung ..................................................... 64
Zugriffsmethoden ........................................ 65
Konstruktoren .............................................. 67
bung ........................................................... 71
7 Vererbung .............................................. 72
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
Vererbung..................................................... 72
Klassen ableiten und erweitern ................... 73
Konstruktoren aufrufen............................... 74
Geerbte Methoden berschreiben .............. 76
Vererbungsketten und
Zuweisungskompatibilitt ........................... 79
Polymorphie in der Vererbung .................... 80
Die Superklasse Object ............................... 82
Finale Klassen ............................................... 84
Abstrakte Klassen und abstrakte
Methoden ..................................................... 85
bung .......................................................... 87
8 Packages ................................................. 88
8.1
8.2
8.3
8.4
8.5
8.6
8.7
Inhalt
Weitere Datentypen
10 Mit Strings und Wrapper-Klassen
arbeiten ................................................108
10.1
10.2
10.3
10.4
10.5
10.6
Arrays .........................................................116
Mit Arrays arbeiten .....................................118
Mehrdimensionale Arrays...........................121
Spezielle Methoden zur Arbeit mit
Arrays .........................................................122
Parameterbergabe an
die main-Methode ......................................122
Methoden mit variabler Anzahl von
Parametern..................................................123
Mit Aufzhlungstypen arbeiten .................124
bung .........................................................126
Weitere Mglichkeiten
15 Mit Dateien arbeiten........................... 168
15.1
15.2
15.3
15.4
15.5
12 Collections-Framework .......................128
12.1
12.2
12.3
12.4
12.5
12.6
12.7
12.8
Fehlerbehandlung
13 Ausnahmebehandlung mit
Exceptions ............................................150
13.1
13.2
13.3
13.4
13.5
13.6
13.7
14 Assertions .............................................164
14.1
14.2
14.3
14.4
Grundlagen zu Assertions...........................164
Assertions einsetzen....................................164
Assertions bei der Programmausfhrung auswerten................................166
bung .........................................................167
Grundlegende Sprachelemente
In diesem Kapitel erfahren Sie
f was reservierte Wrter und Bezeichner sind
f wie Variablen und Konstanten verwendet werden
f welche primitiven Datentypen Java besitzt
f welche Operatoren Sie verwenden knnen
Voraussetzungen
D Erzeugen, bersetzen und Ausfhren von Java-Anwendungen
3.1
D
D
D
D
D
D
3.2
Bezeichner festlegen
Bezeichner (Identifier) sind alle frei whlbare Namen, mit denen Sie in Ihren Java-Programmen beispielsweise
Variablen, Konstanten und Methoden benennen. Bei der Programmierung knnen Sie ber einen Bezeichner
auf diese Elemente zugreifen. Fr den Aufbau eines Bezeichners gelten folgende Regeln:
16
Bezeichner mssen mit 'a' ... 'z', 'A' ... 'Z', '_' oder '$' beginnen und knnen dann beliebig fortgesetzt
werden.
Grundlegende Sprachelemente
Java verwendet den UniCode-Zeichensatz (1 Zeichen wird durch 2 Byte gespeichert). Deshalb knnen
auch Buchstaben aus anderen Alphabeten genutzt werden. Dies ist allerdings nicht zu empfehlen.
Schon im Sinne der besseren Lesbarkeit sollten Sie nur die Zeichen 'a' ... 'z', 'A' ... 'Z', '_' und '0' ... '9'
verwenden.
Java unterscheidet zwischen Gro- und Kleinschreibung. Name, NAME und name sind drei unterschiedliche Bezeichner fr Elemente in Java.
Java verwendet den Bezeichner in seiner kompletten Lnge (alle Stellen sind signifikant).
Die hier aufgefhrten Regeln sind vorgeschrieben. Fr spezielle Elemente gelten Empfehlungen, an die sich
Java-Programmierer blicherweise halten. So ist der Quelltext leichter von anderen Programmierern zu verstehen. Diese Empfehlungen werden, sofern erforderlich, in dem jeweiligen Zusammenhang erlutert.
Reservierte Wrter
Java besitzt reservierte Wrter, die zum Schreiben eines Programms verwendet werden. Da jedes reservierte
Wort eine feste, definierte Bedeutung besitzt, drfen Sie diese nicht fr eigene, so genannte Bezeichner einsetzen. ber Bezeichner (Identifier) knnen Sie die Programmteile in Java benennen, die Sie selbst erzeugen.
Die folgende bersicht enthlt alle reservierten Wrter von Java.
abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
false
*)
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
null
*)
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
*)
try
void
volatile
while
Die drei mit *) gekennzeichneten reservierten Wrter stellen konstante vordefinierte Werte dar und werden
als Literale bezeichnet. Alle anderen hier aufgefhrten reservierten Wrter sind so genannte Schlsselwrter.
Schlsselwrter werden in der Darstellung von Quelltextauszgen in dieser Schulungsunterlage fett hervorgehoben. Dies erleichtert Ihnen das Lesen der Quelltexte.
3.3
Quelltext dokumentieren
Kommentare erleichtern es Ihnen, zu einem spteren Zeitpunkt die Funktionsweise einzelner Teile
wieder nachzuvollziehen.
Mithilfe von Suchfunktionen knnen Sie die Quelltextdateien schnell nach Begriffen durchsuchen, die
Sie im Kommentar verwendet haben.
Sofern andere Personen das Programm weiterbearbeiten sollen, knnen sich diese leichter in den
Quelltext einarbeiten.
Kommentare nehmen Sie direkt in den Quelltext Ihres Programms auf. Da die Kommentare aber nicht vom
Compiler ausgewertet, sondern berlesen werden sollen, mssen Sie Ihre Erluterungen im Quelltext speziell
als Kommentare kennzeichnen.
17
Kommentare erstellen
In Java existieren zwei grundlegende Kommentartypen:
Einzeilige Kommentare
//
/*
*/
Kommentare schachteln
D
D
D
D
{
public static void main(String[] args)
{
System.out.println("Hallo Welt!");
18
Grundlegende Sprachelemente
3.4
Syntax fr Anweisungen
Die Syntax von Anweisungen ist durch folgende Regeln festgelegt:
D
D
D
Eine Anweisung (Statement) besteht aus einer einfachen Anweisung oder aus einem Anweisungsblock.
D
D
Die Klammern
statement;
//oder
{
//weitere Anweisungen
//Ende des Anweisungsblocks
19
3.5
Primitive Datentypen
Datentypen
In den Anweisungen eines Programms arbeiten Sie mit Daten, die sich in ihrer Art unterscheiden:
D
D
D
Damit genau festgelegt ist, welche Daten jeweils zulssig sind, besitzt Java einfache Datentypen, so genannte
primitive Datentypen. Sie unterscheiden sich in der Art der Daten, in dem zulssigen Wertebereich und in der
Gre des dafr bentigten Speichers. Des Weiteren bestimmt der Datentyp die Operationen und Funktionen, die fr diesen Datentyp angewendet werden knnen. Fr jeden primitiven Datentyp ist der jeweils bentige Speicherplatz immer gleich.
Integer-Datentyp
Integer-Datentypen stellen ganze Zahlen (ohne Nachkommastellen) mit Vorzeichen dar. Sie treten in vier verschiedenen Datentypvarianten auf, die sich in ihrem Wertebereich und der Gre des belegten Speicherplatzes unterscheiden.
Datentyp
Wertebereich
Speichergre
byte
1 Byte
short
2 Byte
int
4 Byte
long
8 Byte
D
D
blicherweise werden Sie fr ganzzahlige Werte den Datentyp int verwenden, denn er bietet fr die meisten Anwendungsflle einen ausreichenden Wertebereich.
Gleitkomma-Datentypen
Fr Fliekommazahlen (Dezimalzahlen) werden Gleitkomma-Datentypen mit Vorzeichen verwendet. Der
Computer kann jedoch nicht jede Zahl genau darstellen. Dies fhrt auch bei einfachen Rechnungen zu Rundungsfehlern. Je nach verwendetem Typ lassen sich nur Zahlen mit einer bestimmten Genauigkeit abbilden.
Fr eine hhere Genauigkeit wird aber auch mehr Speicherplatz bentigt.
Datentyp
Genauigkeit
Speichergre
float
7 Stellen
4 Byte
double
15 Stellen
8 Byte
blicherweise werden Sie fr Dezimalzahlen den Datentyp double verwenden, denn die Computer verfgen
zumeist ber ausreichenden Speicherplatz, und beim Datentyp float machen sich Rundungsfehler deutlich
bemerkbar.
20
Grundlegende Sprachelemente
(2) Zeichen-Datentyp
Fr die Darstellung alphanumerischer Zeichen wird der primitive Zeichen-Datentyp char verwendet. Er
kann ein beliebiges UniCode-Zeichen enthalten. Dadurch ist die Darstellung der Zeichen nicht nur auf Zahlen
und Buchstaben begrenzt, sondern sie knnen auch Sonderzeichen wie !$%&/ sowie Buchstaben anderer
Alphabete enthalten. Sie knnen immer nur ein einziges Zeichen speichern.
Datentyp
Wertebereich
Speichergre
char
Alle UniCode-Zeichen
2 Byte
Wertebereich
Speichergre
boolean
true, false
1 Byte
true und false sind reservierte Wrter, die als Bezeichnung fr die Wahrheitswerte wahr und falsch in Java
festgelegt sind und als boolesche Literale bezeichnet werden. Die Literale true und false entsprechen
nicht einer Zahl (beispielsweise 0 oder 1) wie in anderen Programmiersprachen.
3.6
Werte, die Sie im Quelltext eingeben (z. B. Zahlen), werden als Literale bezeichnet. Fr deren Schreibweise
gelten entsprechende Regeln, damit der Datentyp ersichtlich ist.
Numerische Datentypen
Fr numerische Werte des Datentyps int knnen Sie beispielsweise die Vorzeichen
die Ziffern 0 9 verwenden (das Vorzeichen + kann entfallen).
D
D
D
D
Wenn Sie explizit den Datentyp long bentigen, knnen Sie das Suffix L verwenden, z. B. 126L
bzw.
und
Fr Fliekommawerte knnen Sie die Exponentialschreibweise verwenden. Den Wert 4,56*10 knnen
Sie im Quelltext beispielsweise folgendermaen eingeben: 4.56e3. Die Schreibweise 4.56E3 ist ebenfalls
zulssig, die Verwendung des Kleinbuchstabens erleichtert jedoch die Lesbarkeit.
Wenn Sie explizit den Datentyp float bentigen, knnen Sie das Suffix F verwenden, z. B. 100.0F
Boolescher Datentyp
Fr die Eingabe eines logischen Wertes existieren lediglich die beiden Literale true (wahr) und false
(falsch).
21
Escape-Sequenz Bedeutung
\u
Sie knnen ein Zeichen auch als UniCode-EscapeSequenz darstellen. Die UniCode-Reprsentation ist
dann in Apostrophe ' zu setzen. Escape-Sequenzen
beginnen mit einem Backslash \ . Die nebenstehende
Tabelle zeigt eine bersicht ber die EscapeSequenzen.
3.7
Beispiel: \u0045
\b
Backspace
\t
Tabulator
\n
line feed
\f
form feed
\r
carriage return
\"
Anfhrungszeichen
\'
Hochkomma
\\
Backslash
D
D
Eine Variable muss definiert sein, bevor sie Daten aufnehmen kann.
Eine Variable muss einen Wert enthalten, bevor sie verwendet werden kann.
22
Grundlegende Sprachelemente
Zulssige Variablendefinition
Unzulssige Variablendefinition
{
int number;
...
}
//die Variable number ist hier nicht
//mehr gueltig
...
{
int number;
//jetzt existiert wieder
//eine lokale Variable mit
//dem Namen number
...
int number;
...
{
int number;
...
}
}
//unzulaessig!
}
Zwei Beispiele fr den Gltigkeitsbereich einer Variablen
Nach der schlieenden Klammer } ist die im Block definierte Variable nicht mehr gltig. Es kann
eine neue Variable mit dem gleichen Namen definiert werden .
Da Blcke geschachtelt werden knnen, ist die Variable auch im untergeordneten Block gltig.
Eine Variablendefinition mit demselben Namen ist hier also unzulssig.
D
D
Die Definition einer Variablen ist eine Anweisung und wird mit einem Semikolon abgeschlossen.
Die Namen der Variablen werden direkt nach dem Datentyp, getrennt durch ein oder mehrere Leerzeichen, angegeben.
Mehrere Variablen desselben Typs knnen Sie in einer Anweisung definieren. Die Variablennamen
werden dabei durch Kommata getrennt .
D
D
Definieren Sie nur eine Variable pro Zeile. Kommentare lassen sich bersichtlich einfgen. Die Lesbarkeit des Quelltextes wird verbessert, was auch eine mgliche berarbeitung erleichtert.
Mchten Sie einen Namen aus mehreren Wrtern zusammensetzen, schreiben Sie direkt hinter das
erste kleingeschriebene Wort ohne ein Trennzeichen (z. B. einen Unterstrich) die weiteren Wrter.
Beginnen Sie diese Wrter zur Abgrenzung jeweils mit Grobuchstaben. Beispiele fr Variablennamen
sind time, maxTextLength, timeToEnd.
23
3.8
Werte zuweisen
Hufig ist Expression ein Wert, den Sie direkt beispielsweise als Zahl eingeben (Literal). Expression
kann aber auch eine andere Variable sein, sofern diese bereits einen Wert besitzt, oder ein komplexer
Ausdruck. Komplexe Ausdrcke werden Sie im weiteren Verlauf dieses Kapitels kennen lernen.
identifier = expression;
abgeschlossen.
Grundlegende Sprachelemente
3.9
Typkompatibilitt
Sie knnen einer Variablen nur den Wert des Datentyps zuweisen, den sie selbst besitzt oder den sie aufgrund ihres Wertebereichs umfasst. Zum Beispiel knnen Sie einer Variablen vom Typ double den Wert einer
Variablen vom Typ int zuweisen. Der Datentyp int ist kompatibel zum Datentyp double. Der Datentyp
double ist aber nicht kompatibel zum Datentyp int.
Typkonversion
Bei kompatiblen Typen fhrt Java automatisch eine implizite Typkonversion durch. So knnen Sie beispielsweise eine Ganzzahl (Typ int) problemlos einer Variablen vom Typ double zuweisen.
Sollten die Typen nicht kompatibel sein, so knnen Sie eine explizite Typkonversion durchfhren. Logische
Werte (boolean) knnen nicht umgewandelt werden.
//korrekt
//korrekt
//korrekt
Die ersten beiden Zuweisungen sind korrekt, denn die Zahl 100 ist ganzzahlig und passt daher zu der
Variablen vom Typ int, bzw. die Zahl 1.45 passt zur Variablen vom Typ double.
Die Zuweisung ist ebenfalls korrekt, denn die Zahl 80 ist zwar ganzzahlig, sie ist aber Bestandteil der
rationalen Zahlen und passt daher zu der Variablen vom Typ double. Diese (implizite) Datentypkonvertierung wird von Java automatisch durchgefhrt.
Die Zahl 1.23 ist eine Zahl mit Nachkommastellen und gehrt
daher nicht zu den ganzen Zahlen. Java nimmt keine (implizite) Datentypkonversion wie bei der Zuweisung durch.
Der Compiler liefert eine entsprechende Fehlermeldung.
Java fhrt, sofern es mglich ist, die explizite Typkonversion durch, ohne den Sinn des Ergebnisses zu bercksichtigen. Die Verantwortung fr den sinnvollen Einsatz der erzwungenen Typumwandlung obliegt dem Programmierer.
...
double value = 0.0;
int number = 5;
...
value = (int)number;
...
25
Mehrere Konstanten knnen Sie, durch Kommata getrennt, in einer Anweisung definieren.
Wie lokalen Variablen knnen Sie Konstanten zusammen mit der Definition auch initialisieren oder
spter in einer separaten Anweisung.
Die Schreibweise fr Konstanten weicht blicherweise von der Schreibweise fr Variablen ab: Zur Kennzeichnung einer Konstanten werden nur Grobuchstaben verwendet. So knnen Konstanten sofort als solche erkannt werden, und der Programmierer wei, dass beispielsweise eine weitere Wertzuweisung nicht mglich
ist. Sofern sich der Name einer Konstanten aus mehreren Wrtern zusammensetzt, wird der Unterstrich _
zur Trennung dieser Wrter verwendet. Konstanten knnten beispielsweise SONIC_SPEED, MAX_USERS oder
MWST heien.
Konstanten verwenden
Sie schreiben beispielsweise ein Programm, in dem an vielen Stellen Berechnungen durchgefhrt werden, die
die aktuelle Mehrwertsteuer verwenden. Durch die Einfhrung einer Konstanten wird der Programmcode
besser lesbar und leichter nderbar. Wenn sich die Hhe der Mehrwertsteuer verndert, brauchen Sie bei Verwendung einer Konstanten nur einmal den Wert der Konstanten zu ndern, statt im gesamten Programmquelltext die Zahl 0.19.
final double MWST = 0.19; // Definition und Initialisierung der Konstanten MWST
...
// Verwendung der Konstanten MWST in Berechnungen
26
Grundlegende Sprachelemente
D
D
identifier = expression;
Einige Operatoren wie die zur Addition + , Subtraktion - Multiplikation * und Division / kennen Sie als
Grundrechenarten. Fr die Ausfhrungsreihenfolge in einem Ausdruck werden Operatoren nach Prioritten
eingeteilt. Die Ausfhrungsreihenfolge kann jedoch auch durch das Setzen von runden Klammern ( , )
festgelegt werden, die die hchste Prioritt besitzen. Der Inhalt der Klammern wird immer zuerst ausgewertet.
Folgende Operatoren knnen Sie in Java verwenden:
Arithmetische Operatoren
Zu den arithmetischen Operatoren gehren in Java die Grundrechenarten ( + , - , * , / ) und der ModuloOperator % . Diese Operatoren bentigen jeweils zwei Operanden, die mit dem Operator verknpft werden, und werden daher als binre Operatoren bezeichnet.
Die Grundrechenarten knnen auf Integer- und auf Gleitkommawerte angewendet werden. Bei der Anwendung der Operatoren gilt wie in der Mathematik die Regel "Punktrechnung geht vor Strichrechnung". Das
bedeutet, dass die Operatoren * und / eine hhere Prioritt besitzen als die Operatoren + und - . Neben der Prioritt ist die so genannte Assoziativitt (Bindung) fr die Auswertung entscheidend. Sie legt
fest, in welcher Richtung die Auswertung erfolgt. Alle Operatoren mit der gleichen Prioritt besitzen auch die
gleiche Assoziativitt. Die arithmetischen (binren) Operatoren besitzen eine Links-Assoziativitt, d. h., sie
sind links-bindend.
Beispiel
3 + 4 * 5 + 6 + 7
= 3 + 20
Alle Operatoren haben jetzt die gleiche Prioritt und sind alle linksbindend.
+6+7
= (3 +20)
+6+7
= (23
+ 6)+ 7
= 29
+7
= 36
Auswertung eines Ausdrucks
27
Geklammerte Ausdrcke werden immer zuerst ausgewertet und "Punktrechnung geht vor Strichrechnung".
int i = 3 + 4 * 5;
Wenn sich bei einer Berechnung mit Integer-Werten Kommastellen ergeben, lsst Java diese einfach
wegfallen. Java wendet das Verfahren Division mit Rest an (ein Divisonsrest wird in Kauf genommen),
der verbleibende Rest bleibt dann unbercksichtigt.
int i = 14 / 5;
Der % -Operator, auch Modulo-Operator genannt, bestimmt den Rest bei einer Division von Integeroder Double-Zahlen.
int i = 14 % 5
Beispiel: ReducedNotation.java
int i = 15;
int k = 3;
i
i
i
i
i
i
+=
+=
-=
/=
*=
%=
5;
k;
7;
k;
7;
4;
//ausfuehrlich:
//ausfuehrlich:
//ausfuehrlich:
//ausfuehrlich:
//ausfuehrlich:
//ausfuehrlich:
i
i
i
i
i
i
=
=
=
=
=
=
i
i
i
i
i
i
+
+
/
*
%
5;
k;
7;
k;
7;
4;
->
->
->
->
->
->
i
i
i
i
i
i
erhaelt
erhaelt
erhaelt
erhaelt
erhaelt
erhaelt
den
den
den
den
den
den
Wert
Wert
Wert
Wert
Wert
Wert
20
23
16
5
35
3
28
Grundlegende Sprachelemente
Beispiel: IncrementDecrement.java
int i = 3;
double d = 1.5;
i++;
d--;
//ausfuehrlich: i = i + 1
//ausfuehrlich: d = d - 1.0
int i = 5, j = 5;
i++; //entspricht ++i;
//i erhaelt den Wert 6;
j--; //entspricht --j;
//j erhaelt den Wert 4;
Beispiel: PrefixPostfix.java
int i = 10, j = 10;
int result1 = 2 * ++i;
Vorzeichenoperatoren
Bei negativen Zahlen kennen Sie die Kennzeichnung mit einem vorangestellten - . Bei positiven Zahlen
knnten Sie ein + voranstellen, das aber entfallen kann. Diese Vorzeichenoperatoren werden als unre
Operatoren bezeichnet, denn sie besitzen nur einen Operanden.
Die unren Vorzeichenoperatoren knnen nicht nur auf Zahlen, sondern auch auf Variablen bzw. auf
ganze Ausdrcke angewendet werden.
Die unren Vorzeichenoperatoren besitzen eine hhere Prioritt als die binren (arithmetischen)
Operatoren.
Die Auswertung der unren Vorzeichenoperatoren erfolgt von rechts nach links. Das heit, unre Vorzeichenoperatoren besitzen eine Rechts-Assoziativitt (Rechts-Bindung).
29
Beispiel: Sign.java
int i = 3, k = 5;
int result = 0;
result = -i;
result = -(-3);
Vorzeichen-Operatoren anwenden
Zuerst wird die Klammer ausgewertet und liefert das Ergebnis: -2.
Anschlieend wird durch den Vorzeichenoperator - das Vorzeichen gewechselt.
result erhlt den Wert 2.
Die Schreibweise --3 ist nicht zulssig, da -- eine Dekrementierung bedeutet und diese nur fr Variablen erlaubt ist. Jedoch ist die Formulierung - -3 zulssig. Durch das Leerzeichen werden hier zwei Vorzeichenoperatoren und nicht die Dekrementierung erkannt.
Mithilfe von Vergleichsoperatoren knnen Sie Ausdrcke formulieren, die einen Wert vom Typ boolean
liefern. Diese Ausdrcke lassen sich sprachlich entsprechend den folgenden Beispielen wie eine Behauptung
formulieren, die entsprechend mit wahr (true) oder falsch (false) beurteilt werden kann:
D
D
D
In Java knnen alle mathematischen Vergleiche mithilfe einfacher Zeichen dargestellt werden. Vergleichsoperatoren knnen auf fast alle primren Datentypen angewendet werden. Ist ein Ausdruck nicht wahr, wird
false geliefert, sonst true. Es werden 6 Vergleichsoperatoren unterschieden.
30
==
!=
>
liefert true, wenn der erste Ausdruck grer als der zweite ist (alle auer boolean)
<
liefert true, wenn der erste Operand kleiner als der zweite ist (alle auer boolean)
>=
liefert true, wenn der erste Operand grer oder gleich dem zweiten ist (alle auer boolean)
<=
liefert true, wenn der erste Ausdruck kleiner oder gleich dem zweiten ist (alle auer boolean)
Grundlegende Sprachelemente
Beispiel: CompareOperators.java
int i = 10;
int j = 15;
boolean b = i > j; // b ist false
In Java ist es nicht mglich, den Zuweisungsoperator = mit dem Vergleichsoperator == zu verwechseln.
Verwenden Sie in Ausdrcken versehentlich den Zuweisungsoperator, liefert der Compiler eine Fehlermeldung.
Logische Operatoren
Diese Operatoren dienen dazu, zwei Ausdrcke, die einen logischen Rckgabewert (true, false) liefern,
entsprechend einer Vorschrift miteinander zu verknpfen. Je nach Verknpfungsvorschrift ist das Ergebnis
ebenfalls true oder false. Es gibt vier logische Operatoren:
Verknpfung Syntax
Bedeutung
And
(Und)
Or
(Oder)
expression1 || expression2
Der ODER-Operator || ergibt true, wenn mindestens einer der verknpften Ausdrcke true liefert.
expression1 ^ expression2
Xor
(exklusiv Oder)
Not
(Negation)
!expression
Die Operatoren &&, || und ^ sind links-bindend, whrend der Operator ! wie der Vorzeichenoperator rechtsbindend ist. Das heit, die Auswertung erfolgt von links nach rechts, sofern sie durch Klammern oder vorrangige Prioritten der Operatoren nicht gendert wird.
Beispiel: LogicalOperators.java
int k = 0, i = 1;
boolean b = false;
b = (k > i) && (k >= 0);
b = (k > i) || (i > k);
b = !b;
Beachten Sie, dass die Auswertung eines Ausdrucks, der logische Operatoren verwendet, abgebrochen wird,
wenn sich am Gesamtergebnis nichts mehr ndern kann.
int k = 0, i = 1;
boolean b = false;
b = (k > i) && (k >= 0);
31
D
D
%d
%x
%g
%n
%%
Beispiel: FormattedOutput.java
int i = 213;
double x = 3.5;
System.out.printf("Eine Zahl: %d%nWert von i ist: %d%nWert von x ist: %g%n",7,i,x);
D
D
D
D
D
Auch in der zweiten Zeile werden Text und eine Ganzzahl (i) ausgegeben.
Eine Zahl: 7
Wert von i ist: 213
Wert von x ist: 3.50000
In der dritten Zeile erfolgt die Ausgabe des Ausdrucks x als Fliekommazahl (%g). Standardmig erfolgt die Darstellung bei %g mit sechs Dezimalstellen (hier: eine Stelle vor und fnf Stellen hinter dem
Dezimalpunkt).
Neben den hier beschriebenen stehen noch weitere Formatierungszeichen zur Verfgung. Auerdem lsst
sich beispielsweise auch angeben, wie viele Dezimal- bzw. Nachkommastellen angezeigt werden sollen.
D
D
32
Grundlegende Sprachelemente
Beim Starten des Programms geben Sie wie gewohnt den Interpreter java und anschlieend den Programmnamen ein.
Geben Sie nun hinter dem Programmnamen ein Leerzeichen und den gewnschten Wert ein. Verwenden Sie die bekannte Schreibweise fr numerische Datentypen (Vorzeichen, Ziffern, Dezimalpunkt und
gegebenenfalls die Exponentialschreibweise).
Beachten Sie, dass Sie bei Fliekommazahlen einen Dezimalpunkt und kein Komma verwenden.
Ein Texteditor wie beispielsweise TextPad, der speziell das Erstellen, Kompilieren und Ausfhren von JavaProgrammen untersttzt, bietet blicherweise auch die Mglichkeit, Programmparameter ber ein Dialogfenster einzugeben. Um TextPad so zu konfigurieren, rufen Sie den Menpunkt KONFIGURATION - EINSTELLUNGEN auf und aktivieren Sie im Bereich EXTRAS - JAVA-PROGRAMM STARTEN das Kontrollfeld PARAMETERABFRAGE. Bei der Ausfhrung eines kompilierten Java-Programms wird dann automatisch ein Dialogfenster
geffnet. Tragen Sie den gewnschten Parameter hinter dem bereits bestehenden Eintrag ein. (Der bestehende Eintrag bezeichnet das auszufhrende Java-Programm.)
Syntax:
identfier = Integer.parseInt(args[0]);
Beispiel:
Die bergebene Zahl wird als
Zahl vom Datentyp int ausgewertet und in der Variablen
number gespeichert .
Parameter als
Fliekommazahl
(double)
verwenden
Syntax:
identfier = Integer.parseInt(args[0]);
Beispiel:
33
3.14 bung
bungsdatei: --
Schreiben Sie ein Programm, welches den Konstanten NUMBER1 und NUMBER2 die Werte 12
und 4 zuordnet. Anschlieend sollen die Summe, das Produkt, die Differenz und der Quotient dieser Konstanten berechnet und in geeigneten Variablen gespeichert werden. Geben
Sie die jeweiligen Ergebnisse zur Kontrolle aus.
Geben Sie drei verschiedene Mglichkeiten an, den Wert 1 zu einer Variablen x vom Typ int
zu addieren.
Welchen Wert liefern die folgenden Ausdrcke? Jeder Ausdruck bernimmt dabei die neuen
Werte fr d und e.
int d = 1, e = 2;
d *= e;
d += e++;
d -= 3 - 2 * e;
e /= (d + 1);
34
Schreiben Sie ein Programm, das die Anweisungen aus Aufgabenteil 4 enthlt und nach
jeder dieser Anweisungen die Namen und Werte der Variablen d und e ausgibt.
Grundlegende Sprachelemente
35