Wrapper Klassen
Unter dem Begriff „Wrapper-Klassen" versteht man die Klassen java.lang.Boolean, java.lang.Integer, java.lang.Long, java.lang.Short, java.lang.Byte, java.lang.Double, java.lang.Float und java.lang.Character.
Die Wrapper-Klassen bilden das objektorientierte Gegenstück zu den primitive Datentypen. Sie tragen praktisch die selbe Information wie der entsprechende primitive Datentyp. Allerdings können sie in der Regel nicht für arithmetische Operationen verwendet werden. Vielmehr nutzt man sie in bestimmten Situationen des Softwaredesigns, wenn beispielsweise eine Schnittstelle ein Objekt erfordert, oder wenn es sinnvoll erscheint, dass ein Parameter auch den Wert „null" annehmen kann. Ihr eigentlicher Wert liegt aber in ihren vielfältigen Konvertierungs- und Umwandlungsfunktionen, die wir im Folgenden kennenlernen.
Alle Wrapperklassen bieten die Möglichkeit, einen String in die entsprechende Datenklasse umzuwandeln bzw. zu parsen. Schauen wir uns das am Beispiel von java.lang.Integer an:
Alle Methoden parsen sehr defensiv und werfen eine java.lang.NumberFormatException, wenn die übergebene Zeichenkette nicht exakt einem Interger-Wert entspricht. Übrigens: Integer#getInteger(String key) parst nicht nach Integer, sondern gibt den Wert einer Systemvariablen mit dem Key „key" wieder.
Die numerischen Wrapperklassen definierten ihren Wertebereich über die Konstanten MAX_VALUE und MIN_VALUE, die den Wertebereich der entsprechenden Klassen angeben. DieWrapperklassen erlauben es häufig auch, eine Hexadezimal-,Binär- oder Oktaldarstellung des entsprechenden Wertes zu erhalten(#toBinaryString(), #toOctalString(), #toHexString()).
Character verwendet im Gegensatz zu vielen anderen Programmiersprachen zwei Byte und definiert alle Zeichen in 16 BitUnicode. Ein char definieren Sie so: char c = 'ö' oder so: char c= '\u00F6'. Die Unicode – Notation lässt sich auch in Zeichenketten verwenden. Informationen zu Unicode
Mit der Character Wrapper-Klasse können Sie feststellen, ob ein Zeichen in einem bestimmten Zeichensatz ein Groß- oder Kleinbuchstabe (isUppserCase(..), isLowerCase(..)), ein Zahlzeichen(isDigit(..)), ein Whitespace (isWhitespace(..)) usw. ist. Die Klasse ist insgesamt etwas unübersichtlich, vor allem wenn man sich nicht gut mit Zeichensätzen und Zeichenkodierung auskennt.
Aufgabe: IntegerForm
Schreiben Sie ein Programm, das einen Integer-Wert einliest und seine Hexadezimal-, Oktal- und Binärdarstellung ausgibt.
Musterlösung: java1.aufg.referenz.IntegerForm