Your SlideShare is downloading. ×
Autoboxing in Java 5
Autoboxing in Java 5
Autoboxing in Java 5
Autoboxing in Java 5
Autoboxing in Java 5
Autoboxing in Java 5
Autoboxing in Java 5
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Autoboxing in Java 5

2,272

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,272
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • #toc2
  • 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.

    ×