Autoboxing in Java 5

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Autoboxing in Java 5 - Presentation Transcript

    1. Autoboxing
    2. valueOf()
      • Um ein Wrapper-Objekt zu bekommen, nutzt man entweder
        • den Konstruktor der Wrapper-Klasse
        • oder valueOf() .
      • Während valueOf(String) schon immer existierte, ist valueOf(int) neu In Java 5.
      • Integer in = new Integer( 23 );
      • Integer in = Integer.valueOf( 23 );
      • Der Unterschied: Die Fabrikfunktion baut nicht immer neue Integer -Objekte aufgebaut.
        • Zahlen zwischen -128 und +127 kommen aus einem Pool.
    3. Boxing: Von Primitiv zum Wrapper
      • Das Boxing verpackt ein primitives Element in ein Objekt der zugeordneten Wrapper-Klasse. Automatisch mit Boxing:
      • Integer in = 23;
      • Boxing entspricht einer impliziten Typumwandlung eines primitiven Typs in ein Objekt der Wrapper-Klasse.
      • Integer in = Integer.valueOf( 23 );
      • Wichtig zu verstehen ist, dass beim Boxing nicht der Konstruktor aufgerufen wird, sondern die Fabrikfunktion valueOf() .
    4. Wann Boxing?
      • Boxing wird immer dann vorgenommen, wenn ein Wrapper-Objekt gebraucht wird, aber ein primitiver Wert gegeben ist:
        • Wertzuweisung, Parameterübergabe, Ergebnisrückgabe, Array-Initialisierung
      • Integer[] ia = new Integer[]{ 1, 2, 3 };
      • Falls der gegebene Typ nicht exakt zur erwarteten Wrapper-Klasse passt, wird kein Konvertierung vorgenommen:
      • Integer in = 3; // ok
      • Double db = 3; // nö, Compilerfehler
      • Double db = (double) 3; // ok
      • Trotzdem geht:
      • Number pi = 3.1415; // pi in Double, das ist Number
    5. Unboxing: Von Wrapper zum Primitiven
      • Unter Unboxing versteht man das automatische Konvertieren eines Elementes der Wrapper-Klasse in den primitiver Typ.
      • Beispiel mit explizitem Methodenaufruf (Annahme, die Variable in ist ein Integer ):
      • int i = in.intValue();
      • Mit Unboxing heißt es nur:
      • int i = in;
      • Der Compiler wird immer Unboxing versuchen, wenn ein Wrapper-Objekt verfügbar ist, aber ein primitiver Wert gebraucht wird:
      • Integer in = 1;
      • int i = 2 + in;
    6. Autoboxing bei Boolean
      • So wie auch bei arithmetischen Operationen Wrapper-Objekte ausgepackt werden, so ist das auch im Fall von Boolean -Objekten und logischen Operatoren ! , || und && .
      • Boolean case1 = true;
      • Boolean case2 = true;
      • boolean case3 = false;
      • Boolean result = (case1 || case2) && case3;
    7. Boxing/Unboxing beim Inkrement
      • Das folgende Programmstück funktioniert:
      • for ( Integer i = 1; i <= 10; i++ )
      • System.out.println( i );
      • Hier wird, obwohl i ein Integer ist, gültig i++ ausgeführt.
        • i++ wird zunächst ausgepackt, dann erhöht und wieder eingepackt. Der Compiler generiert:
      • i = Integer.valueOf( i.intValue() + 1 );
      • Die Performance ist nicht optimal, und das ist das Problem.
        • Viele Objekte werden nicht ganz offensichtlich erzeugt.

    + tutego tutego , 2 years ago

    custom

    961 views, 0 favs, 5 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 961
      • 895 on SlideShare
      • 66 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 1
    Most viewed embeds
    • 62 views on http://www.tutego.de
    • 1 views on http://tutego.de
    • 1 views on http://tutego.com
    • 1 views on http://www.tutego.com
    • 1 views on http://static.slidesharecdn.com

    more

    All embeds
    • 62 views on http://www.tutego.de
    • 1 views on http://tutego.de
    • 1 views on http://tutego.com
    • 1 views on http://www.tutego.com
    • 1 views on http://static.slidesharecdn.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories