30
Einführung in die Programmierung mit Java 37 Universität Bremen Elementare Datentypen Datentyp Default Speicherplatz Wertebereich byte 0 1 Byte (8 Bits) -128 bis 127 short 0 2 Bytes (16 Bits) -32768 bis 32767 int 0 4 Bytes (32 Bits) -2147483648 bis 2147483647 long 0 8 Bytes (64 Bits) -9223372036854775808 bis 9223372036854775807 float 0.0 4 Bytes (32 Bits) ±1.40239846E-45 bis ±3.40282347E+38 double 0.0 8 Bytes (64 Bits) ±4.94065645841246544E-324 bis ±1.79769313486231570E+308 boolean false ? (min. 1 Bit) false, true char '\u0000' 2 Bytes (16 Bits) '\u0000' bis '\uFFFF'

Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

  • Upload
    dinhnhu

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 37

Universität Bremen

Elementare Datentypen

� Datentyp Default Speicherplatz Wertebereich� byte 0 1 Byte (8 Bits) -128 bis 127

� short 0 2 Bytes (16 Bits) -32768 bis 32767

� int 0 4 Bytes (32 Bits) -2147483648 bis 2147483647

� long 0 8 Bytes (64 Bits) -9223372036854775808 bis9223372036854775807

� float 0.0 4 Bytes (32 Bits) ±1.40239846E-45 bis±3.40282347E+38

� double 0.0 8 Bytes (64 Bits) ±4.94065645841246544E-324 bis±1.79769313486231570E+308

� boolean false ? (min. 1 Bit) false, true

� char '\u0000' 2 Bytes (16 Bits) '\u0000' bis '\uFFFF'

Page 2: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 38

Universität Bremen

Ganzzahlige Datentypen

� Zahlensysteme

� Dezimal, es gibt die Ziffern 0 bis 9 44 22

11 0011 000011

55 22

22 AA

32+8+232+8+2=

5*8+25*8+2=

2*16+102*16+10=

� Binär, nur die Ziffern 0 und 1

� Oktal, nur die Ziffern 0 bis 7

� Hexadezimal, die Ziffern 0 bis 9 und A bis F

� Literale� Dezimal: 42, +42, -42, 42L, 42l

� Oktal: 052, +052, -052, 052L, 052l� Hexadezimal: 0x2A, +0x2a, -0x2A, 0x2aL, 0x2Al

4*10+24*10+2=

Ein L am Ende bedeutet long

Ein L am Ende bedeutet long

Page 3: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 39

Universität Bremen

Fließkommazahlen

� Format

Ein F am Ende bedeutet float, ein D double. Wird nichts an-gegeben, ist der Typ double

Ein F am Ende bedeutet float, ein D double. Wird nichts an-gegeben, ist der Typ double

11 77EE ++551111 4422 ..44--

� Exponent

� Wert = Mantisse × 10Exponent

� Literale� Float: 0.0f, .382f, 3.1415F, -3.1415f, 17E7f, 17e-7f, 17E+7F� Double: 0.0, .0392039029303, -3.141592653589d, 1E+100

� Mantisse

Page 4: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 40

Universität Bremen

Zeichen

� Literale� Normal: 'a', 'b', 'c'

� Wagenrücklauf: '\r'

Java-Quelltexte werden im Unicode verarbeitet. An jeder Stelle kann \uXXXX stehen.

Java-Quelltexte werden im Unicode verarbeitet. An jeder Stelle kann \uXXXX stehen.

f\u006fr(int i = 0; i < 10; ++i)f\u006fr(int i = 0; i < 10; ++i)

for(int i = 0; i < 10; ++i)for(int i = 0; i < 10; ++i)

=\ = Escape-Zeichen\ = Escape-Zeichen

� Zeilenvorschub: '\n'� Seitenvorschub: '\f'� Tabulatorsprung: '\t'

� Backspace: '\b'� Hochkomma: '\''� Backslash: '\\'

� Unicode Zeichen: '\u12ab'

Page 5: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 41

Universität Bremen

Zeichenketten

� String ist eine Klasse, kein Basistyp� Daher kann man Ausdrücke schreiben, wie z.B. s.equals("Hallo")

� Literale� "Hallo", "wie geht's?"

� "Ich sage \"mir geht's gut\"" → Ich sage "Mir geht's gut"

� Beispiele� System.out.println("\"DM\"\t\"Euro\"\n1\t0,51");� "DM" "Euro"

1 0,51

In String-Literalen können alle Escape-Sequenzen aus char-Literalen verwendet werden

In String-Literalen können alle Escape-Sequenzen aus char-Literalen verwendet werden

Page 6: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 42

Universität Bremen

Typkonvertierung

� Automatisch� byte → short → int → long → float → double

� Manuell� byte b; short s; int i; long l; float f = 1.5; double d = -1.5; char c;

� b = (byte) f; (b == 1)� f = (float) 178.2� l = (int) d; (l == -2)

� c = (char) 32

� char

Bei der Typumwandlung von double/float in einen Ganzzahltyp wird immer abgerundet

Bei der Typumwandlung von double/float in einen Ganzzahltyp wird immer abgerundet

� Durch Funktionen� String s = Integer.toString(i);� i = Integer.parseInt(s);� d = Double.parseDouble(s);

Page 7: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 43

Universität Bremen

Wrapper-Klassen

� Datentyp Wrapper� byte Byte

� short Short� int Integer� long Long

� float Float� double Double� boolean Boolean

� char Character

� Datentyp Wrapper� byte Byte

� short Short� int Integer� long Long

� float Float� double Double� boolean Boolean

� char Character

� Generell� Wrapper.MAX_VALUE

� z.B. Byte.MAX_VALUE

� Wrapper.MIN_VALUE� Wrapper.parseWrap(String s)

� z.B. Integer.parseInt("1234");

� Wrapper.toString(type t)� z.B. Integer.toString(1234);

� Float und Double� Wrapper.NEGATIVE_INFINITY

� z.B. Double.NEGATIVE_INFINITY

� Wrapper.POSITIVE_INFINITY

� Wrapper.NaN

� Generell� Wrapper.MAX_VALUE

� z.B. Byte.MAX_VALUE

� Wrapper.MIN_VALUE� Wrapper.parseWrap(String s)

� z.B. Integer.parseInt("1234");

� Wrapper.toString(type t)� z.B. Integer.toString(1234);

� Float und Double� Wrapper.NEGATIVE_INFINITY

� z.B. Double.NEGATIVE_INFINITY

� Wrapper.POSITIVE_INFINITY

� Wrapper.NaN

Page 8: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 44

Universität Bremen

Nachschlagen in der Dokumentation

Page 9: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 45

Universität Bremen

int boolean String

i b s

Variablen

7 true "Hallo"

� Richtig� int i = 7;� boolean b = true;� String s = "Hallo";

� Falsch� boolean b = 7;� boolean b = "Hallo";

Page 10: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 46

Universität Bremen

Konstanten

� Allgemein� Konstanten sind benannte Literale, können also überall verwendet werden, wo auch

Literale zulässig sind (z.B. hinter case in der switch-Anweisung)� Im Gegensatz zu Variablen kann sich der Wert einer Konstanten niemals ändern

� Beispiel:� final int IS_NUMBER = 1,

IS_KEYWORD = 2;:

switch(type){

case IS_NUMBER::

case IS_KEYWORD::

}

Page 11: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 47

Universität Bremen

Bezeichner für Variablen/Konstanten

� Erstes Zeichen muss ein Buchstabe, '_' oder '$' sein� Alle weiteren Zeichen können Buchstaben, Ziffern, '_' oder '$' sein� Für Variablen keine Bezeichner von Schlüsselwörtern verwenden

� abstract default if private throwboolean do implements protected throwsbreak double import public transientbyte else instanceof return trycase extends int short voidcatch final interface static volatilechar finally long super whileclass float native switchconst for new synchronizedcontinue goto package this

� Groß- und Kleinschreibung wird unterschieden

Page 12: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 48

Universität Bremen

Konventionen für Bezeichner

� Variablen� Für Laufvariablen in Schleifen: i, j� Für die Argumente von main: args� Variablen beginnen mit Kleinbuchstaben: stream

� Mehrere Worte werden durch Großbuchstabenaneinander gefügt: thisIsAVeryLongName

� '_' und '$' werden nicht verwendet

� Konstanten� Nur Großbuchstaben, Ziffern und '_' MAX_WORDS, Math.PI

� Klassen� Genau wie Variablen, beginnen aber mit einem System, Greetings

Großbuchstaben

Page 13: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 49

Universität Bremen

Lebenszeit/Sichtbarkeit

� Lebenszeit� In Funktionen bis Ende des aktuellen Blocks {...}

� Ausnahme: Funktionsparameter� void f(int a) {...} ist eigentlich void f { (int a) {...} }

� Ausnahme: Definitionen in for� for(int i = 0; i < 10; ++i) {...} ist eigentlich

{ for(int i = 0; i < 10; ++i) {...} }

� Sichtbarkeit, Suchen nach Bezeichner� In Funktion rückwärts, aber nicht in Blöcke hinein� In Funktionsparametern

� In Klasse (auch hinter der aktuellen Funktion)

� Mehrfachdefinitionen� nicht in Funktionen, d.h. void f(int a) {int a; {int a;}} nicht erlaubt

class HideAndSeek{

static int target;static void main(String[] args){System.out.println(target);{int target = 17;System.out.println(target);

}System.out.println(target);

}}

class HideAndSeek{

static int target;static void main(String[] args){System.out.println(target);{int target = 17;System.out.println(target);

}System.out.println(target);

}}

Page 14: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 50

Universität Bremen

Arrays

� Definition� Eine Reihung fester Länge von

Variablen gleichen Typs, auf die mit einem Index zugegriffen werden kann.

� Arrays sind Objekte

� Beispiel� String[.] a = {

"Herbert Pappelbusch","Irene Schmidt","Claudia Miesmuffel",

:"Tobias Kleinemann","Mareike Bumtrupp"

};

Page 15: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 51

Universität Bremen

Eindimensionale Arrays

� Beispiel� String[.] a = new String[50];

a[0] = "Herbert Pappelbusch";a[1] = "Irene Schmidt";a[2] = "Claudia Miesmuffel";

:a[48] = "Tobias Kleinemann";a[49] = "Mareike Bumtrupp";

String s = "Tobias Kleinemann";

for(int i = 0; i < a.length; ++i)if(a[i].equals(s))

System.out.println("Gefunden!");

Page 16: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 52

Universität Bremen

Zweidimensionale Arrays

� Beispiel� String[.][.] a =

{{"Herbert","Pappelbusch","Herr"},{"Irene","Schmidt","Frau"},

:};

for(int i = 0; i < a.length; ++i)System.out.println(a[i][2] + " " +

a[i][0] + " " + a[i][1]);

Page 17: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 53

Universität Bremen

Mehrdimensionale Arrays

� Dimensionen� Eine beliebige Anzahl von Dimensionen ist möglich

� Speicherplatzverbrauch bedenken!

� Ein zweidimensionales Array ist ein Array von Arrays

� Daher können die Arrays in weiteren Dimensionen selbst auch wieder unterschiedliche Größen haben

� Beispiel� int[.][.] a = new int[5][.];

a[0] = new int[3];a[1] = new int[2];a[2] = new int[4];

Page 18: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 54

Universität Bremen

Operatoren

� Stelligkeiten� Unäre Operatoren, z.B die Vorzeichen '+' oder '-'

� Binäre Operatoren, z.B. die Rechenoperationen '+' oder '-'� Trinärer Operator '? :'

� Arten� Vergleichsoperatoren, z.B. '>' oder '<'

� Logische Operatoren, z.B. '&&' oder '||'� Arithmetische Operatoren, z.B. '+' oder '-'� Bit-Operatoren, z.B. '>>' oder '&'

� Zuweisungsoperatoren

� Operatoren können abhängig vom Typ der Operanden unterschiedliche Auswirkungen haben� z.B. ist 1+1 == 2, aber "1"+"1" ergibt "11"

Page 19: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 55

Universität Bremen

Vergleichsoperatoren

� Allgemein� Vergleichsoperatoren liefern immer einen Wahrheitswert (boolean) zurück

� Beide Operanden müssen einen kompatiblen Typ haben

� Numerische Operatoren� Gleichheit: age == 18� Ungleichheit: age != 18

� Größer: age > 18� Größer oder gleich: age >= 18� Kleiner: age < 18

� Kleiner oder gleich: age <= 18

� Für Objekte (z.B. Strings)� Identität: s1 == s2 (Ist s1 dieselbe Zeichenkette wie s2?)� Gleichheit s1.equals(s2) (ist kein Operator sondern eine Funktion)

Page 20: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 56

Universität Bremen

Logische Operatoren

� Allgemein� Logische Operatoren verrechnen ein oder zwei Wahrheitswerte zu einem

neuen Wahrheitswert

� Operatoren� Logisches Nicht: !(age > 18) == (age <= 18)� Logisches Und: age > 18 && age < 65� Logisches Oder: age <= 18 || age >= 65

� Unvollständige Auswertung� if(age > 18 && age < 65) ... entspricht if(age > 18)

if(age < 65) ...� if(age <= 18 || age >= 65) ... entspricht if(age > 18) ...

else if(age < 65) ...� Nützlich z.B. für if(d != 0 && 100 / d > 1)

oder if(d == 0 || 100 / d > 1)

Page 21: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 57

Universität Bremen

Arithmetische Operatoren

� Allgemein� Arithmetische Operatoren verrechnen ein oder zwei Werte zu einem neuen

Wert� Bei zwei Operanden müssen beide einen kompatiblen Typ haben� Der Ergebnistyp ist identisch mit dem „größeren“ Typ der beiden Operanden

� Operatoren� Addition: a + b, 17 + 4, 17 + 4.0

"a" + "b" ("ab"), 17 + "4" ("174"), "17" + 4. ("174.0")

� Subtraktion: a - b, 17 - 4, 17 - 4.0� Multiplikation: a * b, 17 * 4, 17 * 4.0� Division: a / b, 17 / 4 (== 4), 17 / 4.0 (== 4.25)

� Modulo (Divisionsrest): a % b, 17 % 4 (== 1), 17.5 % 4.5 (== 4.0)

Page 22: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 58

Universität Bremen

Arithmetische Operatoren

� Ganzzahlarithmetik� Überlauf ist kein Fehler

� Das Ergebnis wird auf die entsprechende Bit-Anzahl gekappt� Division durch 0 ist nicht erlaubt (erzeugt ArithmeticException: / by zero)

� Fließkommaarithmetik� Division durch 0 ist kein Fehler!

� +x / 0.0 == Double.POSITIVE_INFINITY� -x / 0.0 == Double.NEGATIVE_INFINITY� 0.0 / 0.0 == Double.NaN

� Bei einem Überlauf wird Double.POSITIVE_INFINITY oder Double.NEGATIVE_INFINITY

Page 23: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 59

Universität Bremen

Bit-Operatoren

� Allgemein� Bit-Verknüpfungen können auf Ganzzahltypen und boolean angewendet

werden

� Verknüpfungen� Und 0xea & 0x4c 11 0011 0000111111

00 0011 1100001100

00 0011 0000001100

&

==

� Oder 0xea | 0x4c� Exklusiv-Oder 0xea ^ 0x4c

� Nicht ~0xea

� Verschiebungen� Links 0xea << 3� Rechts 0xea >> 3� Vorzeichenlos rechts 0xea >>> 3

Page 24: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 60

Universität Bremen

Zuweisungsoperatoren

� Zuweisung: i = 7, s = "Hallo" , a[a[i]][2][17] = 42 + ix = y = z = 0, a[x = 7] = 1

� Rechnen und Zuweisung: i += 17, a[a[1]] <<= 4, x *= x� Variable op= ausdruck entspricht Variable = Variable op ausdruck, aber die

Variable wird nur einmal ausgewertet

� Pre-Inkrement/Dekrement: ++i, ++a[5], a[--i] = a[i]� Post-Inkrement/Dekrement: i++, a[5]++, a[i--] = a[i]

� Ein Post-Inkrement/Dekrement verändert den Wert der Variablen, liefert aber den alten Wert als Ergebnis zurück

� int i = 0; int j = 0;a[i++] = 17; b[++j] = 42;a[i++] = 18; b[++j] = 43;

� a[0] == 17, a[1] == 18 b[1] == 42, b[2] == 43

Page 25: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 61

Universität Bremen

Sonstige Operatoren

� If-Else� bedingung ? ausdruck : ausdruck

� z.B. a = b == 0 ? 0 : 100 / b;r = r >= Math.PI

? r - 2 * Math.PI : r < -Math.PI ? r + 2 * PI : r;

� new� new erzeugt neue Objekte oder Arrays

� z.B. int[] a = new int[10];FileInputStream stream = new FileInputStream("aFile");

� Typumwandlung� int a = (int) 3.1415

Page 26: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 62

Universität Bremen

Vorrang von Operatoren

� Bindungsstärke� Was wird zuerst ausgewertet, wenn verschiedene Operatoren in einem

Ausdruck verwendet werden?� z.B. Punkt- vor Strichrechnung: 1 + 2 * 3 = 1 + (2 * 3) = 7

� Assoziativität� Was wird zuerst ausgewertet, wenn Operatoren gleicher Bindungsstärke in

einem Ausdruck verwendet werden?� z.B. links bei Minus: 3 - 2 - 1 = (3 - 2) - 1 = 0

� Beispiel� a = a >> 4 & 0x0f | a << 4 & 0xf0� a = (((a >> 4) & 0x0f) | ((a << 4) & 0xf0)) 11 0011 0000111111

Page 27: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 63

Universität Bremen

Vorrang von Operatoren

� Operator Asso. Beschreibung� .,(),[] links Funktionsaufruf und Array-Index� -,+,!,~,++,-- rechts Vorzeichen, logisches Nicht, arithm. Nicht, In-, Dekrement� new,(typ) rechts Objekterzeugung und Typumwandlung� *,/,% links Multiplikation, Division, Modulo� +,- links Addition und Subtraktion� <<,>>,>>> links Links- und Rechtsverschiebung� <,<=,>,>= Kleiner, Kleiner-Gleich, Größer, Größer-Gleich� ==,!= links Gleichheit und Ungleichheit� & links arithmetisches Und� ^ links arithmetisches Exklusiv Oder� | links arithmetisches Oder� && links logisches Und� || links logisches Oder� ? : links arithmetisches If-Else� =,+=,-=,*=,/=,%=,^= rechts Zuweisung und Rechenzuweisung� &=,|=,<<=,>>=,>>>= rechts Rechenzuweisung

Bin

dung

sstä

rke

Page 28: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 64

Universität Bremen

Ein UPN-Rechner

� Umgekehrte Polnische Notation� Die Operanden kommen zuerst, dann kommt der Operator, z.B. 1 2 +

� Arbeitet als Stack-Maschine: Jeder Operator holt sich seine Operanden von der Spitze des Stapels und legt das Ergebnis wieder dort ab

� Beispiel� Für 1 + 2 * 3 schreibt man: 1 2 3 * +

77+

11

66*

11

22

333

11

222

111

Page 29: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 65

Universität Bremen

Ein UPN-Rechner

Page 30: Elementare Datentypen - Uni Bremenroefer/pi1help/2.pdf · Einführung in die Programmierung mit Java 38 Universität Bremen Ganzzahlige Datentypen Zahlensysteme Dezimal, es gibt die

Einführung in die Programmierung mit Java 66

Universität Bremen

Ein UPN-Rechner