28.04.2014 Aufrufe

Programmieren mit Java Java-Referenzen

Programmieren mit Java Java-Referenzen

Programmieren mit Java Java-Referenzen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

GhK<br />

FB 17 Mathematik / Informatik<br />

<strong>Programmieren</strong> <strong>mit</strong> <strong>Java</strong><br />

Was ist JAVA?<br />

Arbeitsweise, Programmstruktur<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

<strong>Java</strong>-<strong>Referenzen</strong><br />

• http://www.ora.com/info/java/ (Verlagsseite O‘ Reilly)<br />

• http://www.javasoft.com/ (Sun Microsystems <strong>Java</strong>-Seite)<br />

• David Flanagan : JAVA in a nutshell (deutsch), O‘ Reilly, 1996<br />

• Martin Schrader , Lars Schmidt- Thieme : <strong>Java</strong>, eine Einführung, Springer 1997


GhK<br />

FB 17 Mathematik / Informatik<br />

• einfach<br />

– nur kontrollierte Sprünge (kein goto)<br />

– modularer Aufbau<br />

– keine Zeiger<br />

• interpretiert<br />

– Übersetzung in <strong>Java</strong>-Bytecode<br />

– interpretiert durch ava-¡ irtual-¢ achine<br />

– portabel (plattformunabhängig)<br />

– gute Performance , sparsam<br />

£<br />

ust ¤ n ¥ ime compilierung<br />

• robust<br />

– für technische Anwendungen kozipiert<br />

– stark typisiert<br />

– Ausnahmenbehandlung<br />

– Sicherheit<br />

• Objekt-orientiert<br />

• Multithread-fähig<br />

Eigenschaften von <strong>Java</strong><br />

GhK<br />

FB 17 Mathematik / Informatik<br />

<strong>Java</strong>-Umgebung<br />

.java-Datei<br />

Compiler<br />

(javac)<br />

.class-Datei<br />

Applet<br />

Applikation<br />

Texteditor<br />

Compiler<br />

(javadoc)<br />

Interpreter<br />

(appletviewer)<br />

JVM (java)<br />

Interpreter<br />

.html-Datei<br />

Browser<br />

(netscape)<br />

Interpreter


GhK<br />

FB 17 Mathematik / Informatik<br />

elementare Programmstruktur<br />

• Programme (<strong>Java</strong>-Klassen)<br />

public class <br />

{<br />

public static void main (String args[])<br />

{ ..........<br />

}<br />

}<br />

• Applets<br />

import java.applet.*;<br />

import java.awt.*;<br />

Programmdatei :<br />

.java<br />

public class <br />

{<br />

public static void main<br />

(String args[])<br />

{ ..........<br />

}<br />

}<br />

public class extends Applet<br />

{<br />

public void init ()<br />

{ ..........<br />

}<br />

public void paint (Graphics )<br />

{ ..........<br />

}<br />

}<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

Kommentare<br />

• von entscheidender Wichtigkeit bei jedem <strong>Programmieren</strong><br />

sind die Kommentare, ohne die ein Programm weder<br />

lesbar noch wartbar ist:<br />

– Was tut dieser Programmabschnitt?<br />

– Welche Rolle spielt diese Variable<br />

– Welche Bedingungen sind an diese Parameter geknüpft<br />

• <strong>Java</strong> kennt 3 sorten von Kommentarklammern<br />

– // ........ Zeilenende kurze Anmerkungen<br />

– /* ........ */ Kommentare über mehrere Zeilen<br />

– /** ........ */ Kommentare, die zur Dokumentation<br />

verwendet werden


GhK<br />

FB 17 Mathematik / Informatik<br />

// Zaehler.java<br />

Beispiel: Zaehler<br />

class Zaehler<br />

{<br />

// Variablen<br />

private int wert;<br />

//Zählerstand<br />

//Methoden<br />

int wert() {return wert;}<br />

//Zählerstand ablesen<br />

void wert(int i) {wert = i;} //Zähler setzen<br />

void inkrement() {++wert;} // weiterzählen<br />

void dekrement() {--wert;} // zurückzählen<br />

}<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

//ZaehlerTest.java<br />

import java.io.* ;<br />

//in/output<br />

class ZaehlerTest<br />

{<br />

public static void main(String[] args)<br />

{<br />

Zaehler z = new Zaehler();<br />

BufferedReader in =<br />

new BufferedReader(<br />

new InputStreamReader(System.in));<br />

// in liest von der Tastatur<br />

PrintWriter out =<br />

new PrintWriter(System.out, true);<br />

// out schreibt auf den Bildschirm<br />

for(;;)<br />

{ //Endlosschleife<br />

out.println("----\nZählerstand: " + z.wert()<br />

+ "\n----");<br />

char akt = '+' ; // char-Variable deklariert<br />

Beispiel ZählerTest<br />

do<br />

{<br />

out.print("Aktion(+/-): ");<br />

out.flush();<br />

try<br />

{<br />

akt = in.readLine().charAt(0);<br />

}<br />

catch(IOException ioe){}<br />

}<br />

while (akt != '+' && akt != '-');<br />

if (akt ='+') z.inkrement();<br />

else z.dekrement();<br />

} //Ende for-Schleife<br />

} //Ende main<br />

} //Ende ZaehlerTest


GhK<br />

FB 17 Mathematik / Informatik<br />

❚<br />

Ausgabe ZaehlerTest<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

//ZaehlerFrame.java<br />

import java.awt.* ; //Fenstertechnik<br />

import java.awt.event.* ; //Mausaktionen<br />

class ZaehlerFrame extends Frame<br />

{private Button plus, minus;<br />

private TextField stand;<br />

private Zaehler z;<br />

ZaehlerFrame(String s)<br />

{super(s);<br />

z = new Zaehler();<br />

setLayout(new GridLayout(2,2));<br />

add(new Label("Zählerstand: ", Label.RIGHT)<br />

add(stand = new TextField(10));<br />

stand.setText(String.valueOf(z.wert()));<br />

stand.setEditable(false);<br />

add(plus = new Button("Inkrementiere"));<br />

add(minus = new Button("Dekrementiere"));<br />

ButtonListener check = new ButtonListener();<br />

plus.addActionListener(check);<br />

minus.addActionListener(check);<br />

pack(); setVisible(true);<br />

} //Ende Konstruktor<br />

Beispiel Zählerframe<br />

public static void main(String[] args)<br />

{ new ZaehlerFrame("Zähler-Test")<br />

} //Ende main<br />

class ButtonListener<br />

implements ActionListener<br />

{public void actionperformed(ActionEvent e)<br />

{if<br />

(e.getAction.command().equals("Inkrementiere"))<br />

z.inkrement();<br />

else<br />

z.dekrement();<br />

stand.setText(String.valueOf(z.wert()));<br />

} //Endeactinperformed<br />

} //Ende ButtonListener<br />

} //Ende ZaehlerFrame


GhK<br />

FB 17 Mathematik / Informatik<br />

//ZaehlerApplet.java<br />

import java.applet.* ; //Applet<br />

import java.awt.* ; //Fenstertechnik<br />

import java.awt.event.* ; //Mausaktionen<br />

public class ZaehlerAplett extends Applet<br />

{private Button plus, minus;<br />

private TextField stand;<br />

private Zaehler z;<br />

public void init()<br />

{z = new Zaehler();<br />

setLayout(new GridLayout(2,2));<br />

add(new Label("Zählerstand: ", Label.RIGHT)<br />

add(stand = new TextField(10));<br />

stand.setText(String.valueOf(z.wert()));<br />

stand.setEditable(false);<br />

add(plus = new Button("Inkrementiere"));<br />

add(minus = new Button("Dekrementiere"));<br />

ButtonListener check = new ButtonListener();<br />

plus.addActionListener(check);<br />

minus.addActionListener(check); // pack();<br />

setVisible(true);<br />

} //Ende init<br />

Beispiel Zählerapplet<br />

public static void main(String[] args)<br />

{ new ZaehlerFrame("Zähler-Test")<br />

} //Ende main<br />

class ButtonListener<br />

implements ActionListener<br />

{public void actionperformed(ActionEvent e)<br />

{if<br />

(e.getAction.command().equals("Inkrementiere"))<br />

z.inkrement();<br />

else<br />

z.dekrement();<br />

stand.setText(String.valueOf(z.wert()));<br />

} //Endeactinperformed<br />

} //Ende ButtonListener<br />

} //Ende ZaehlerFrame<br />

HTML-Seite:<br />

...<br />

<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

ZählerApplet


GhK<br />

FB 17 Mathematik / Informatik<br />

Bezeichner<br />

• Alle in einem <strong>Java</strong> Programm verwendeten Variablen,<br />

Funktionen etc. tragen Namen (Bezeichner), die nach<br />

folgenden Regeln gebildet werden:<br />

– Sie beginnen <strong>mit</strong> einem Buchstaben a..z,A..Z oder _,$.<br />

– die nachfolgenden Zeichen dürfen außerdem auch Zahlen oder andere<br />

druckbare Zeichen des Unicode-Zeichensatzes (eine 16-Bit Obermenge<br />

des ASCII-Zeichensatzes) sein.<br />

• <strong>Java</strong> ist case-sensitiv, d.h. es unterscheidet zwischen<br />

Groß- und Kleinschreibung.<br />

– Er, eR, ER, er sind jeweils verschiedene Bezeichner.<br />

• Die Verwendung von _ und $ am Bezeichneranfang ist<br />

nicht zu empfehlen, weil die meisten Programmierer sie für<br />

Systemvariablen halten werden.<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

• <strong>Java</strong> kennt 8 vordefinierte Datentypen<br />

elementare Datentypen<br />

Datentyp Größe(Bit) default Wert Min Max<br />

boolean 8 false<br />

byte 8 0 -128 127<br />

char 16 \u0000 \u0000 \uFFFF<br />

short 16 0 -32768 32767<br />

int 32 0 -2147483648 2147483647<br />

long 64 0 -9223372036854775808<br />

9223372036854775808<br />

float 32 0.0F ±3.40282347E+38<br />

±1.40239846E-45<br />

double 64 0.0D ±1.79769313486231570E+308<br />

±4.94065645841246544E-324


GhK<br />

FB 17 Mathematik / Informatik<br />

Typ boolean<br />

• boolean Werte sind keine Zahlwerte, sondern können nur<br />

die Werte true und false annehmen.<br />

• Operationen auf boolean:<br />

! logische Negation (einstellig)<br />

& logisches AND (zweistellig)<br />

^ logisches XOR (zweistellig)<br />

| logisches OR (zweistellig)<br />

?: logisches IF (dreistellig)<br />

&& short circuit AND (zweistellig)<br />

|| short circuit OR (zweistellig)<br />

== gleich (zweistellig)<br />

!= ungleich (zweistellig)<br />

x false true<br />

!x true false<br />

x&y false y<br />

x^y y !y<br />

x|y y true<br />

x?y:z z y<br />

x==y !y y<br />

x!=y y !y<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

short circuit Auswertung<br />

• Die Operationen && sowie || unterscheiden sich in ihrer<br />

Ausgabe auf boolean nicht von & und |, jedoch im<br />

„Verhalten“.<br />

• Ist x&&y bzw. x||y auszuwerten, so wird zunächst x<br />

berechnet. Wertet x zu 0 bzw. 1 aus, so ist dies bereits die<br />

Ausgabe, ohne daß y noch ausgewertet werden muß.<br />

• Der Sinn ist nicht nur eine Verringerung des Aufwandes,<br />

sondern auch die Vermeidung von Sonderfällen.<br />

Beispiel:<br />

(x==0)||(y/x


GhK<br />

FB 17 Mathematik / Informatik<br />

Integer-Typen<br />

• In <strong>Java</strong> gibt es keine gesonderten vorzeichenlosen ganzen<br />

Zahlen, sondern alle 4 Zahlbereiche byte, short, int, long<br />

haben auch negative Werte.<br />

• Literale (Zeichendarstellung von Werten)<br />

– Die Zahlen dürfen <strong>mit</strong> einem Vorzeichen +,- oder <strong>mit</strong> 0, 0X oder 0x<br />

beginnen.<br />

– Nun kommt eine Folge von Ziffern, die nicht <strong>mit</strong> 0 beginnt<br />

– Ist der Anfang 0, besteht die Folge nur aus Oktalziffern 0,..,7 oder ist leer;<br />

die Zahl wird als Oktalzahl interpretiert.<br />

– Ist der Anfang 0x oder 0X, können auch die hexadezimalziffern A,..,F bzw.<br />

a,..,f in der Folge auftreten; die Zahl wird als Hexadezimalzahl interpretiert.<br />

– alle übrigen Zahlen werden als Dezimalzahlen interpretiert<br />

– 255, 0377, 0xff, 0xFF, 0XFF haben den gleichen Wert.<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

Integer-Operationen<br />

• einstellig<br />

++ Inkrement x+1<br />

-- Dekrement x-1<br />

+, - Vorzeichen x , -x<br />

~ bitweises Komplement x XOR FF..F<br />

• zweistellig<br />

+, - plus, minus<br />

*, /, % mal, geteilt, Rest<br />

Shift links, rechts<br />

>>> Shift rechts <strong>mit</strong> 0-Erweiterung<br />

&, ^, |<br />

bitweises AND, XOR, OR<br />

• boolean-wertig<br />

==, != gleich, ungleich<br />

= Größenvergleich<br />

?: dreistelliges IF (b)?x:y = “falls b, dann x sonst y“


GhK<br />

FB 17 Mathematik / Informatik<br />

Seiteneffekte von ++ und --<br />

• Normalerweise erwartet man von einer Operation, daß sie<br />

Eingaben entgegennimmt und eine Ausgabe abliefert, aber<br />

die Eingaben unverändert läßt, ++ und -- sind anders!<br />

• ++x und --x erhöhen oder erniedrigen den Wert von x um 1<br />

und liefern dann diesen veränderten Wert von x ab.<br />

• x++ und x-- liefern zuerst den Wert von x ab und erhöhen<br />

oder erniederigen danach den Wert von x<br />

• Beispiel: hat x den Wert 5 , so ist die Wirkung von:<br />

y=++x y=x++ y=--x y=x--<br />

x: 6 6 4 4<br />

y: 6 5 4 5<br />

• Man nennt ein solches Verhalten einer Funktion einen<br />

Seiteneffekt.<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

char-Typ<br />

• Der typ char kann beliebige unicode-Zeichen enthalten<br />

• Literale (werden in Hochkommata ‘ ‘ oder “ “ eingeschlossen ):<br />

–alle druckbaren Ascii-Zeichen außer ‘ “ und \ .<br />

–Die Escape-Sequenzen:<br />

\n (neue Zeile) \t (tabulator) \b (Rückschritt) \r (Rücklauf)<br />

\f (neue Seite) \‘ ( Hochkomma) \“ (Quotation) \\ (Backslash)<br />

–Unicode-Zeichen : \uxxxx dabei ist xxxx eine Folge von 1 bis 4<br />

Hexadezimalziffern.<br />

• Beispiele<br />

‘ ‘ Leerzeichen ‘\‘‘ Hochkomma<br />

‘\‘ „Fehler“ ‘\u5c‘ „derselbe Fehler“<br />

‘\\u22‘ Backslash ‘\u3240‘<br />

• Operationen: ==, !=, ?:


GhK<br />

FB 17 Mathematik / Informatik<br />

real-Typen<br />

Gleitkommazahlen gibt es in zwei Genauigkeiten float und<br />

double, die nach IEEE Standard 754 festgelegt sind, nach<br />

diesem Standard gibt es außer den Zahlen noch :<br />

• +inf<br />

• -inf<br />

• NaN<br />

das Ergebnis + Unendlich bei einem Überlauf<br />

das Ergebnis - Unendlich bei einem Unterlauf<br />

das Ergebnis „not a number“, wenn eine Operation kein sinnvolles Ergebnis<br />

haben kann, z.B. Division durch 0 oder Wurzel aus einer negativen Zahl.<br />

Ist x = 0, +inf oder -inf, so ist NaN*x=x<br />

Achtung:<br />

Es wird nie ein Fehler "Division durch 0" moniert!<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

Operationen auf reals<br />

• einstellig<br />

++ Inkrement x+1<br />

-- Dekrement x-1<br />

+, - Vorzeichen x , -x<br />

• zweistellig<br />

+, - plus, minus<br />

*, / mal, geteilt<br />

• boolean-wertig<br />

= =, != gleich, ungleich<br />

= Größenvergleich<br />

?: dreistelliges IF (b)?x:y = “falls b, dann x sonst y“


GhK<br />

FB 17 Mathematik / Informatik<br />

real Literale<br />

• Die Gleitkommazahlen haben die Literaldarstellung:<br />

Vorzeichen Ziffernfolge ¦ Ziffernfolge Exponent Endung<br />

dabei sind<br />

optional<br />

• Vorzeichen § |¨ :<br />

• Exponent © : | Vorzeichen Ziffernfolge optional<br />

<br />

• Endung : | | | optional<br />

wenn ein Exponent vorkommt, ist auch der Dezimalpunkt<br />

optional.<br />

• Die Zahl 256.0172 hat also z.B. folgende Darstellungen:<br />

2560172E-4D, .2560172e3, 2.560172e2f, ...<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

Zeichenketten<br />

• Ein besonderer Datentyp in <strong>Java</strong> ist der String , der eine<br />

Folge von unicode-Zeichen darstellt.<br />

• Literale: Wie bei char werden Einzelzeichen und escapesequenzen<br />

in Folge notiert und die Folge in Hochkommata<br />

eingeschlossen.<br />

• Beispiele: “Ausgabe:\n“ , ‘dies ist ein langer String‘, ““<br />

• Operationen:<br />

+ (Conkatenation) ‘Milch‘+‘Mann‘ steht für ‘ MilchMann‘<br />

==, != (Identität, Vorsicht!!)<br />

length( ) (Länge) length(‘der Hund ist tot.\n‘) ist 18<br />

charAt( ) , equals( ) , compareTo( ) , IndexOf( ) , ...


GhK<br />

FB 17 Mathematik / Informatik<br />

Referenztyp String<br />

• String ist kein elementarer Typ, obwohl er praktisch wie ein<br />

elementarer Typ behandelt wird.<br />

• Elementare Daten haben einen Speicherplatz fester Größe,<br />

in dem ihr Wert abgespeichert ist.<br />

Auch Strings haben einen Speicherplatz fester Größe, in<br />

dem steht aber nur eine Referenz (Verweis, Zeiger) auf<br />

den Speicherplatz, wo die Zeichenfolge abgelegt ist.<br />

• == und != fragen ab, ob zwei Strings auf denselben<br />

Speicherplatz verweisen. x!=y besagt also nicht notwendig,<br />

daß die Zeichenreihen verschieden sind, sondern lediglich,<br />

daß sie an unterschiedlichen Stellen abgelegt sind. Ob<br />

zwei Strings dieselbe Zeichenreihe sind, wird <strong>mit</strong> equals( )<br />

überprüft.<br />

• <strong>Java</strong> achtet darauf , daß gleichlautende String Konstanten<br />

nicht mehrmals an verschiedenen Stellen abgelegt werden.<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

Spezielle Strings<br />

• null ist kein String, sondern allgemein ein leerer Zeiger, wo mal ein<br />

Verweis (z.B. auf einen String) hinein kann.<br />

• ‘‘ (bzw. ““) ist der leere String, d.h. der einzige String<br />

von Länge 0.<br />

• ‘ ‘(bzw. “ “) ist der String der Länge 1, der als einziges<br />

Zeichen das Leerzeichen ( space) enthält.<br />

• In String-literalen können alle Zeichen wie bei char verwendet werden:<br />

– alle druckbaren Ascii-Zeichen außer ‘ “ und \ .<br />

– Die Escape-Sequenzen:<br />

\n (neue Zeile) \t (tabulator) \b (Rückschritt) \r (Rücklauf)<br />

\f (neue Seite) \‘ ( Hochkomma) \“ (Quotation) \\ (Backslash)<br />

– Unicode-Zeichen : \uxxxx dabei ist xxxx eine Folge von 1 bis 4<br />

Hexadezimalziffern.<br />

• Strings sind im Wesentlichen unveränderlich. Eine Veränderung einer<br />

String-Variable kann nur dadurch erzeugt werden, daß man einen<br />

neuen String des gewünschten Inhalts erzeugt und dann die Variable<br />

darauf verweisen läßt.


GhK<br />

FB 17 Mathematik / Informatik<br />

<strong>Java</strong> hat keine Zeiger<br />

Die Behauptung, <strong>Java</strong> habe keine Zeiger, ist in gewissem<br />

Sinn zwar richtig, aber im Grunde genommen völlig falsch.<br />

• Andere Programmiersprachen haben Zeiger, das sind<br />

Speicheradressen, die der Programmierer manipulieren<br />

kann. Letzteres geht in <strong>Java</strong> tatsächlich nicht.<br />

• Alle Datentypen (= Klassen) in <strong>Java</strong>, außer den<br />

elementaren Typen sind Referenztypen, also Zeiger auf<br />

eine entsprechend große Speicherstelle. In diesem Sinne<br />

ist <strong>Java</strong> ohne Zeiger also nicht denkbar. Der Unterschied<br />

zu anderen Programmiersprachen ist, daß die Speicherverwaltung<br />

aus Sicherheitsgründen jedem programmierten<br />

Zugriff entzogen ist. Alles was ein <strong>Java</strong>-Programm tun<br />

kann, ist Speicher anfordern und die zugeteilte Adresse im<br />

Zeiger ablegen.<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

Felder (Arrays)<br />

• Felder (arrays) sind Folgen von Daten, die alle denselben<br />

Typ T besitzen, das Feld wird dann <strong>mit</strong> T[] deklariert.<br />

String ist so ähnlich wie ein char array.<br />

• Auch Felder sind Referenztypen, also Zeiger auf einen<br />

Speicherbereich und werden bei der Deklaration T[] Name<br />

<strong>mit</strong> null (dem leeren Zeiger) initialisiert.<br />

• Beispiele:<br />

– int[] a; //deklariert ein int-Feld a<br />

– String[] b //deklariert ein String-Feld b<br />

– short[][] c //deklariert ein doppelt indiziertes<br />

short-Feld c


GhK<br />

FB 17 Mathematik / Informatik<br />

Erzeugen von Feldern<br />

• Die Deklaration eines Referenztyps (z.B. Feld) erzeugt nur<br />

den Zeiger null, der noch auf nichts zeigt. Deshalb muß ein<br />

solcher Typ vor Gebrauch erst erzeugt werden, d.h.<br />

Speicher muß reserviert und die Adresse im Zeiger<br />

abgelegt werden. (Standardmethode new)<br />

• a = new int[5]<br />

a 0 0 0 0 0<br />

ein Feld von 5 integers wird erzeugt und jeder Eintrag <strong>mit</strong> 0 initialisiert.<br />

• double[] d = {1.1, 1.21, 1.331};<br />

d 1.1 1.21 1.331<br />

ein Feld von 3 doubles wird deklariert, erzeugt und <strong>mit</strong> den angegebenen<br />

Werten initialisiert.<br />

• b = new String[] {“Die“, “Erzeugung“, “von“, “Feldern“};<br />

ein Feld von Strings wird deklariert, erzeugt und <strong>mit</strong> den angegebenen<br />

Werten initialisiert.<br />

die Erzeugung von Feldern<br />

b<br />

GhK<br />

FB 17 Mathematik / Informatik<br />

Zugriff auf Felder<br />

• Der Inhalt von Feldkomponenten kann angesprochen<br />

werden (zum Lesen oder zum Schreiben), indem man den<br />

Feldnamen A und in eckigen Klammern [] die Position i<br />

anspricht : A[i]<br />

• Die Positionen beginnen <strong>mit</strong> 0 und gehen bis length(A)-1<br />

• Beispiel:<br />

int[] x = new int [n] // auch Variable n ist zulässig<br />

for ( int i=0; i


GhK<br />

FB 17 Mathematik / Informatik<br />

Speicherverwaltung<br />

• Aus Sicherheitsgründen übernimmt <strong>Java</strong> vollständig die<br />

Speicherverwaltung.<br />

• new : Der Nutzer (Programmierer) hat nur die<br />

Möglichkeit Speicherplatz für einen bestimmten Datentyp<br />

anzufordern. Die Speicheradresse (Zeiger) wird dann unter<br />

dem Namen des Datenelementes abgelegt.<br />

• elementar : Bei elementaren Datentypen wird für jedes<br />

Datenelement direkt der Wert (kein Zeiger) unter dem<br />

Namen abgelegt.<br />

• garbage collection: Wird ein Speicherbereich von seinem<br />

Programm nicht mehr referenziert, gibt <strong>Java</strong> selbständig<br />

den Speicherplatz wieder frei.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!