Quote Originariamente inviata da el92 Visualizza il messaggio
quando uso valueOf di Integer non restuisce l'intero ma il codisce scii...
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.