16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

- parse...() Metho<strong>de</strong>n, z.B. parseByte(Str<strong>in</strong>g s), parseByte(Str<strong>in</strong>g s, <strong>in</strong>t<br />

radix), parseInt(Str<strong>in</strong>g s), parseInt(Str<strong>in</strong>g s, <strong>in</strong>t radix), erzeugen aus<br />

Zeichenketten <strong>de</strong>n jeweiligen Primitivtyp.<br />

- valueOf(). Für alle Wrapper-Typen <strong>in</strong>tegraler Primitivtypen (byte, char, long, <strong>in</strong>t, short) ist<br />

mit <strong>de</strong>r valueOf()-Metho<strong>de</strong> e<strong>in</strong>e (Factory-) Metho<strong>de</strong> zur Erzeugung e<strong>in</strong>es neuen Wrapper-<br />

Objekts aus e<strong>in</strong>er Zeichenkette <strong>de</strong>f<strong>in</strong>iert.<br />

- die üblichen arithmetischen Operationen stehen zur Verknüpfung von Wrapperobjekten nicht<br />

zur Verfügung (ke<strong>in</strong> Operator overload<strong>in</strong>g).<br />

Referenztypen<br />

Neben <strong>de</strong>n primitiven Typen gibt es die Referenztypen. Dazu gehören: Objekte <strong>de</strong>r<br />

benutzer<strong>de</strong>f<strong>in</strong>ierten und aus vom System bereitgestellten Klassen, <strong>de</strong>r Klassen<br />

Str<strong>in</strong>g und Array (Datenfeld). Weiterh<strong>in</strong> gibt es die vor<strong>de</strong>f<strong>in</strong>ierte Konstante<br />

„null“, die e<strong>in</strong>e leere Referenz bezeichnet.<br />

„Str<strong>in</strong>g“ und „Array“ weisen e<strong>in</strong>ige Beson<strong>de</strong>rheiten aus:<br />

- Für Str<strong>in</strong>gs und Arrays kennt <strong>de</strong>r Compiler Literale, die e<strong>in</strong>en expliziten Aufruf <strong>de</strong>s Operator new<br />

überflüssig machen<br />

- Arrays s<strong>in</strong>d klassenlose Objekte. Sie können ausschließlich vom Compiler erzeugt wer<strong>de</strong>n, besitzen<br />

aber ke<strong>in</strong>e explizite Klassen<strong>de</strong>f<strong>in</strong>ition. Sie wer<strong>de</strong>n <strong>de</strong>nnoch vom Laufzeitsystem wie normale<br />

Objeklte behan<strong>de</strong>lt.<br />

- Die Klasse Str<strong>in</strong>g ist zwar im JDK vorhan<strong>de</strong>n. Der Compiler hat aber Kenntnis über <strong>de</strong>n <strong>in</strong>neren<br />

Aufbau von Str<strong>in</strong>gs und generiert bei Anzeigeoperationen Co<strong>de</strong>, <strong>de</strong>r auf Metho<strong>de</strong>n <strong>de</strong>r Klassen<br />

Str<strong>in</strong>g und Str<strong>in</strong>gBuffer zugreift.<br />

Automatisches Boxen<br />

Box<strong>in</strong>g. Beim Speichern e<strong>in</strong>es Datums von e<strong>in</strong>em primitiven Typ <strong>in</strong> e<strong>in</strong>er Variablen,<br />

die nur Objekte speichern kann, ist kapseln <strong>in</strong> e<strong>in</strong>em Objekt <strong>de</strong>r entsprechen<strong>de</strong>n<br />

(Wrapper-) Klasse nötig (box<strong>in</strong>g). Es kam zu Konstruktoraufrufen dieser Klassen.<br />

Unbox<strong>in</strong>g. Sollte später mit Operatoren auf <strong>de</strong>n Zahlen, die durch gekapselte Objekte<br />

ausgedrückt wur<strong>de</strong>n, gerechnet wer<strong>de</strong>n, so war <strong>de</strong>r primitive Wert mit e<strong>in</strong>em<br />

Metho<strong>de</strong>naufruf aus <strong>de</strong>m Objekt wie<strong>de</strong>r zu extrahieren (unbox<strong>in</strong>g). Es kam zu<br />

Aufrufen wie <strong>in</strong>tValue() im Co<strong>de</strong> 80 .<br />

Bsp.: Manuelles Verpacken und Auspacken primitiver Daten<br />

public class ManuellesBoxen<br />

{<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g [] args)<br />

{<br />

<strong>in</strong>t i1 = 42;<br />

Object o = new Integer(i1);<br />

System.out.pr<strong>in</strong>tln(o);<br />

Integer i2 = new Integer(17);<br />

Integer i3 = new Integer(4);<br />

<strong>in</strong>t i4 = 21;<br />

System.out.pr<strong>in</strong>tln((i2.<strong>in</strong>tValue() + i3.<strong>in</strong>tValue()) * 14);<br />

}<br />

}<br />

Mit <strong>Java</strong> 1.5 können die primitiven Typen mit ihren entsprechen<strong>de</strong>n KLassen<br />

synonym verwen<strong>de</strong>t wer<strong>de</strong>n. Nach außen h<strong>in</strong> wer<strong>de</strong>n die primitiven Typen auch<br />

Objekttypen. Der Übersetzer nimmt die notwendigen box<strong>in</strong>g- und unbox<strong>in</strong>g-<br />

Operationen vor.<br />

80 vgl. 1.4.2.7<br />

60

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!