[Java] Tipi Wrapper e Primitivi
Salve,
di recente mi son trovato a domandarmi questo, dato che Java non lo conosco molto a fondo.
se ad un metodo che accetta come parametro un Integer, cioè:
metodo(Integer ob)
come si comporta Java in questi due casi:
int i = 0;
- metodo(new Integer(i));
- metodo(i);
Java accetta entrambe le versioni.
Dato che conosco le classi Wrapper, in questo caso, c'è un'implicita trasformazione del dato primitivo int in un Integer?
se sì, quale delle due versioni è più efficente, cioè dando come paramtro $i$, quando viene trasformato in un oggetto, a compile time?
Grazie a chi aiuta
di recente mi son trovato a domandarmi questo, dato che Java non lo conosco molto a fondo.
se ad un metodo che accetta come parametro un Integer, cioè:
metodo(Integer ob)
come si comporta Java in questi due casi:
int i = 0;
- metodo(new Integer(i));
- metodo(i);
Java accetta entrambe le versioni.
Dato che conosco le classi Wrapper, in questo caso, c'è un'implicita trasformazione del dato primitivo int in un Integer?
se sì, quale delle due versioni è più efficente, cioè dando come paramtro $i$, quando viene trasformato in un oggetto, a compile time?
Grazie a chi aiuta

Risposte
facendo delle prove, sembra che dando in input un nuovo valore allocato dinamicamente, sia più efficente.
Leggi: http://stackoverflow.com/questions/5041 ... rk-in-java
Fare un benchmark in Java è difficile e molto probabilmente il risultato da te ottenuto ha molto poco valore. Ci sono inoltre altre cose sulle quali conviene lavorare per ottimizzare un codice Java, dubito che quella riga di codice possa mai comparire in un profiler come hot-spot.
Fare un benchmark in Java è difficile e molto probabilmente il risultato da te ottenuto ha molto poco valore. Ci sono inoltre altre cose sulle quali conviene lavorare per ottimizzare un codice Java, dubito che quella riga di codice possa mai comparire in un profiler come hot-spot.
Uuh davvero molto interessante questo tuo link, ti ringrazio molto 
Si ho fatto qualche prova spartana con un ciclo di allocazione dinamica e uno con chiamata con tipo primitivo, in due momenti differenti di prove il primo metodo risultava "più veloce" (passami il termine).

Si ho fatto qualche prova spartana con un ciclo di allocazione dinamica e uno con chiamata con tipo primitivo, in due momenti differenti di prove il primo metodo risultava "più veloce" (passami il termine).