2013-05-13 16 views
7

Il mio collega mi ha detto che dovrei usare il float quando possibile per ridurre la creazione dell'oggetto e aumentare le prestazioni. Java converte in modo silenzioso float su Float (questo richiede una certa potenza di calcolo) ogni volta che è necessario. Quindi mi sembra che l'unica necessità di Float sia quando uno ha bisogno di usare l'oggetto Float molto spesso invece della sua primitiva.Java: dovrei usare float o float?

Quando si guarda a java.awt.color, sta utilizzando il galleggiante, forse inutilmente.

Quando è necessario preferire Float su float in Java?

+1

Utilizzare Float quando si utilizza Generics e quando si desidera che il float mantenga un valore aggiuntivo (null). –

+0

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

+0

Una situazione tipica è quando si desidera memorizzare il float in una raccolta: a meno che non sia un array, si usare Float. – assylias

risposta

7

L'oggetto Float può essere impostato su null per rappresentare un valore sconosciuto.
Il primitivofloat è garantito per avere un valore.

C'è un sovraccarico nell'autoboxing, ma questo è trascurabile. Devi ancora allocare lo spazio per il primitivo in modo che non ci sia nulla da guadagnare lì.

+0

Float.NaN può anche rappresentare un valore sconosciuto. Un 'Float' è 5-7x più grande di una sorgente' float' –

+0

@PeterLawrey sul valore maggiore di 5-7x – Woot4Moo

+3

è di 4 byte per definizione. Un riferimento richiede 4-8 byte (riferimenti 32/64 bit). Un'intestazione di un oggetto è da 12 a 16 byte (32/64 bit) e deve essere allineata a 8 byte. Non sono direttamente confrontabili poiché un float da solo non usa l'heap e un Float si trova nell'heap. Quindi in termini di utilizzo dell'heap float: 0, Float è 16-24 byte. Troppi riferimenti per scavare;) –