2013-05-13 19 views
7

Mój kolega powiedział mi, że jeśli to możliwe, powinienem używać pływaka, aby zredukować tworzenie obiektu i zwiększyć wydajność. Java w trybie cichym konwertuje float na Float (w razie potrzeby wymaga to mocy obliczeniowej). Wydaje mi się więc, że jedyną potrzebą Float jest użycie obiektu Float bardzo często zamiast prymitywu.Java: Czy powinienem używać float lub Float?

Patrząc na java.awt.color, używa on Float, być może niepotrzebnie.

Kiedy należy preferować Float over float w Javie?

+1

Użyj funkcji Float podczas korzystania z programu Generics, a jeśli chcesz, aby zmienna przechwytywała dodatkową wartość (null). –

+0

http://stackoverflow.com/q/12640826/139010 http://stackoverflow.com/q/8419860/139010 –

+0

Jedną z typowych sytuacji jest sytuacja, gdy chcesz przechowywać swój float w kolekcji: chyba że jest to tablica, musicie użyć Float. – assylias

Odpowiedz

7

Obiekt obiektFloat może mieć wartość NULL, aby reprezentować wartość, która jest nieznana.
Gwarantowany prymityw ma wartość.

Jest trochę narzut na autoboxing, ale jest to pomijalne. Nadal musisz przydzielić miejsce dla prymitywu, więc nic tam nie zyskasz.

+0

Float.NaN może również reprezentować nieznaną wartość. "Float" jest 5-7 razy większy niż "float" –

+0

Źródło @PeterLawrey na większym, 5-7-krotnym floodzie, o rozmiarze – Woot4Moo

+3

, z definicji ma 4 bajty. Odwołanie wymaga 4-8 bajtów (odwołania 32/64 bitowe). Nagłówek obiektu ma od 12 do 16 bajtów (32/64 bit) i musi być wyrównany do 8 bajtów. Nie są bezpośrednio porównywalne, ponieważ sam float nie używa sterty, a Float jest na stercie. Więc w kategoriach float użycia sterty: 0, Float ma 16-24 bajty. Zbyt wiele odniesień do wykopywania;) –