Programmieren mit Java Java-Referenzen
Programmieren mit Java Java-Referenzen
Programmieren mit Java Java-Referenzen
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.