Detto così .. no. Spiego meglio, il metodo
public static Integer valueOf(int i)
fa nient'altro che "incapsulare" un int in un oggetto Integer che contiene quel valore int. Non fa alcuna valutazione o modifica sul valore. Questo metodo tra l'altro è stato aggiunto in Java 5 per applicare il principio del "auto-boxing" effettuato dal compilatore.
Se con Java 5, 6, ecc... scrivi
Integer a = 10;
sotto sotto viene invocato questo valueOf.
Il punto è che hai usato charAt che ti restituisce un char, che alla fin fine contiene solo un codice Unicode. E siccome l'unico valueOf applicabile è appunto quello che riceve un int, viene fatta la conversione implicita da char a int che estende semplicemente il valore a 32 bit. Quindi il carattere '2' ha codice 50 (U+0032, notazione Unicode), pertanto il int passato a valueOf è appunto 50.
Pertanto, come ti ho già detto prima: rivedi bene tutto quanto.![]()


Rispondi quotando