Variablenkonzept

11
Learning By Doing Variablendeklaration reserviert Speicherplatz im Hauptspeicher Klassisch, in Java Basistyp x y z 5 2 7 A dresse In h alt int x = 5; int y = 2; int z = 7; Nach Deklaration/Initiali- sierung: Nach Zuweisung y = 5; x y z 5 5 7 A dresse In h alt Initialisierung setzt einen Wert Variable besteht aus Name und Wert • Speicherplatz wird zu Compilationszeit reserviert Variablenkonzept

description

Variablenkonzept. Learning By Doing. Nach Deklaration/Initiali- sierung :. Nach Zuweisung. int x = 5; int y = 2; int z = 7;. y = 5;. Variablenkonzept. Klassisch, in Java Basistyp. Variablendeklaration reserviert Speicherplatz im Hauptspeicher. - PowerPoint PPT Presentation

Transcript of Variablenkonzept

Page 1: Variablenkonzept

Learning By Doing

Variablenkonzept

• Variablendeklaration reserviert Speicherplatz im Hauptspeicher

Klassisch, in Java Basistyp

xyz

527

A d r e s s e I n h a l t

int x = 5;int y = 2;int z = 7;

Nach Deklaration/Initiali-sierung:

Nach Zuweisung

y = 5;

xyz

557

A d r e s s e I n h a l t

• Initialisierung setzt einen Wert

• Variable besteht aus Name und Wert

• Speicherplatz wird zu Compilationszeit reserviert

Variablenkonzept

Page 2: Variablenkonzept

Learning By Doing

• Für Objekte wird in einem dynamischen Speicherbereich (Heap)zu Laufzeit Speicherplatz reserviert

Für Objekte werden Referenzvariablen verwendet:

Deklaration einer Referenzvariablen

T t;

t null

Objekta

t a

Heap

Erzeugung eines Objekts

t = new T();

• Um eine Objekt anzusprechen muss eine Referenzvariable (Referenz)verwendet werden, welche die Adresse des Objekts enthält. Der Wertder Referenz (also die Adresse des Objekts) ist nicht zugänglich

• Objekte werden mit dem Erzeugungsoperator new erzeugt. Der Rückgabe-wert wir einer Referenzvariable zugewiesen

Referenzvariablen

Page 3: Variablenkonzept

Learning By Doing

• Zugewiesene Referenzvariablen zeigen auf dasselbe Objekt

Zuweisung und Vergleich von Referenzvariablen

• Verändert man mit einer dieser Variablen das Objekt, so ist esautomatisch auch für die andere Variable geändert

• Der Vergleich von Referenzvariablen mit == prüft, ob die beidenVariablen auf das gleiche Objekt verweisen und nicht, ob die beidenObjekte gleich sind

Objekta

ta

Heap

ua

T t = new T();T u;

u = t;

Zuweisung/Vergleich

Page 4: Variablenkonzept

Learning By Doing

// WbzEx2.java

import static ch.aplu.util.Console.*;

class WbzEx2{ WbzEx2() { int hans = 3; println("hans: " + hans);

int peter; peter = hans; println("peter: " + peter);

hans = 7; println("hans: " + hans); println("peter: " + peter); }

public static void main(String[] args) { new WbzEx2a(); }}

Basistypen versus Referenztypen

// WbzEx2a.java

import ch.aplu.turtle.*;import java.awt.Color;

class WbzEx2a{ WbzEx2a() { Turtle hans = new Turtle(Color.red);

Turtle peter; peter = hans;

hans.setColor(Color.blue); peter.back(100); }

public static void main(String[] args) { new WbzEx2a(); }}

J2SE V1.4: statt import static nur importdafür statt println() überall Console.println()

Basistypen/Referenztypen

Page 5: Variablenkonzept

Learning By Doing

Referenzvariablen (Referenzen) dienen nichtdazu, Objekte zu speichern, sondern mit ihnen zu kommunizieren

Heap

john

Instanz von john

Referenz von john

Referenzenkommunikation

Page 6: Variablenkonzept

Learning By Doing

BasistypenDatentyp/ Schlüsselwort

Beschreibung Größe/Format

Ganzzahlen byte Ganze Zahlen von -128 bis +127 (–27 bis 27-1) 8-bit Zweierkomplement

(1 byte) short Ganze Zahlen von -32'768 bis +32'767 (–215 bis 215-1) 16-bit Zweierkomplement

(2 bytes) int Ganze Zahlen von -2 147 483 648 bis 2 147 483 647 (–231

bis 231-1) 32-bit Zweierkomplement (4 bytes)

long Ganze Zahlen von -9 223 372 036 854 775 808 bis 9 223 372 036 854 775 807 (-263 bis 263-1)

64-bit Zweierkomplement (8 bytes)

Fliesskommazahlen float Dezimalzahl, ungefähr 7 Ziffern, Exponent 10-38..10+38 32-bit IEEE 754 (24-bit Mantisse/8-bit

Exponent) double Dezimalzahl, ungefähr 16 Ziffern, Exponent 10-308..10+308 64-bit IEEE 754 (53-bit Mantisse/11-bit

Exponent) Andere Typen char Zeichen 16-bit Unicode (kein Vorzeichen) boolean Wahrheitswert wahr oder falsch true/false (1 byte)

s. Buch S. 66

Übersicht Basistypen

Page 7: Variablenkonzept

Learning By Doing

Ausdrücke/Operatoren

s. Buch S. 72/73

Operator Rangordnung Typ Beschreibung . 0 syntaktisch Klassenmember [] 0 syntaktisch Arrayindex () 0 syntaktisch Parameterklammer ++, -- 1 arithmetisch Inkrement u. Dekrement

+, - 1 arithmetisch Unäres Plus u. Minus

~ 1 int Bitweises Komplement

! 1 boolean Logisches Komplement

(type) 1 jeder Cast

*, /, % 2 arithmetisch Multiplikation, Division, Modulo

+, - 3 arithmetisch Addition und Subtraktion

+ 3 String Stringkonkatenation

<< 4 int Shift links

>> 4 int Shift rechts mit Vorzeichenerweiterung

>>> 4 int Shift rechts ohne Vorzeichenerweiterung

<, <=, >, >= 5 arithmetisch Numerische Vergleiche

instanceof 5 Objekt Typvergleich

==, != 6 alle Gleich-/Ungleichheit

Ausdrücke/Operatoren

Page 8: Variablenkonzept

Learning By Doing

Ausdrücke/Operatoren

s. Buch S. 72/73

Operator Rangordnung Typ Beschreibung & 7 int Bitweises Und

& 7 boolean Logisches Und

^ 8 int Bitweises Xor

^ 8 boolean Logisches Xor

| 9 int Bitweises Oder

| 9 boolean Logisches Oder

&& 10 boolean Logisches Und, Kurzschluss

|| 11 boolean Logisches Oder, Kurzschluss

?: 12 alle Bedingungsoperator

= 13 alle Zuweisung

*=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=

14 alle Zuweisung mit Operation

Ausrücke/Op 2. Teil

Page 9: Variablenkonzept

Learning By Doing

Strings• Nicht einfach Zeichenketten, sondern Instanzen einer Klasse

• In Java eine sehr spezielle Implementierung

unveränderlich (immutable)

in einem speziellen Speicherbereich (String pool)

+ - Operator überladen (Konkatenation)

enger Zusammenhang mit Klassen StringBuffer und StringBuilder

Erzeugung mit String-Literal (Anführungszeichen)

Date today = new Date();

String s = "Heute ist der ";...

String s = s + today.toString();

sb.append()

sb.charAt()

sb.deleteCharAt()

sb.setCharAt()

sb.insert()

Strings

Page 10: Variablenkonzept

Learning By Doing

// WbzEx3.java

import javax.swing.JOptionPane;

class WbzEx3{ WbzEx3() { String town = "Bern"; String answer = ""; boolean quitting = false; while (!quitting) { String input = JOptionPane.showInputDialog( "Wo findet der Wbz-Kurs statt?"); if (input == null) quitting = true; else { if (input.equals(town)) { answer = "richtig"; quitting = true; } else answer = "falsch"; JOptionPane.showMessageDialog( null, answer); } } System.exit(0); }

public static void main(String[] args) { new WbzEx3(); }}

WbzEx3

Page 11: Variablenkonzept

Learning By Doing

Arrays• Analog math. Vektor: Statt von Komponenten spricht man von Elementen

• Elemente haben alle denselben Datentyp

• Elemente werden mit einem Arrayindex, der immer bei 0 beginnt, angesprochen

• Ein Array ist ein Objekt (mit etwas speziellen Eigenschaften)

• Ein Array wird mit einer Referenzvariablen (Arrayreferenz) angesprochen. Deklaration:int[] a;

• Das Arrayobjekt (d.h. die Elemente) befinden sich auf dem Heap. Erzeugung:a = new int[6];

• Übliche Kurzschreibweise:int[] a = new int[6];

• Erzeugung/Initialisierung in Kurzschreibweise:int[] a = {1, 2, 3, 6, 5, 4};

• Anzahl Arrayelemente:

a[0], a[1], a[2], a[3], a[4], a[5]

• Lesen/Schreiben (Random access):

a.length; int, keine Klammern (kein Methodenaufruf)

auch: int a[];

Anzahl kann int-Variable sein (semistatisch)

s. Buch S. 99ff

Arrays