Come convertire un int in String in Java
Converti un int Java in stringa con Integer.toString, String.valueOf e la concatenazione.
Trasformare un int in una String è una delle conversioni più comuni in Java — serve ogni volta che si registra un numero, si costruisce un messaggio o si scrive un valore su file. Il JDK offre diversi modi per farlo, e producono tutti lo stesso testo. Questo capitolo mostra le opzioni idiomatiche e quando utilizzare ciascuna.
Integer.toString — la chiamata diretta
Il modo più chiaro ed esplicito è Integer.toString(int). Dice esattamente cosa fa e restituisce il testo decimale del numero:
int n = 256;
String s = Integer.toString(n); // "256"Questo è il metodo che String.valueOf e la concatenazione finiscono entrambi per chiamare internamente, quindi è la conversione canonica. I valori negativi mantengono il loro segno (Integer.toString(-7) restituisce "-7"), e il risultato non è mai null.
String.valueOf — null-safe e sovraccaricato
String.valueOf è sovraccaricato per ogni tipo primitivo, quindi la stessa chiamata funziona per int, long, double, boolean e char:
int n = 256;
String s = String.valueOf(n); // "256"Per un int delega semplicemente a Integer.toString, quindi l'output è identico. Molti sviluppatori lo preferiscono perché un unico nome copre tutti i primitivi ed è la scelta convenzionale quando si converte un riferimento a oggetto che potrebbe essere null (restituisce "null" invece di lanciare un'eccezione).
Concatenazione di stringhe — rapida ma attenzione al costo
Aggiungere un int a una stringa vuota forza una conversione:
int n = 256;
String s = "" + n; // "256"È concisa e va bene per un uso occasionale, ma il compilatore la trasforma in un'operazione StringBuilder. All'interno di un ciclo, ripetuti "" + n creano molti oggetti temporanei; preferire Integer.toString o un singolo StringBuilder in quel caso.
String.format e conversioni di base numerica
Quando si ha bisogno di spaziatura, un segno o una base non decimale, usare String.format o i metodi Integer che supportano la radice:
String padded = String.format("%05d", 42); // "00042"
String hex = Integer.toString(255, 16); // "ff"
String binary = Integer.toBinaryString(255); // "11111111"Ecco come si confrontano le opzioni più comuni:
| Approccio | Ideale per | Nota |
|---|---|---|
Integer.toString(n) | Testo decimale semplice | Canonico; mai null |
String.valueOf(n) | Un solo nome per tutti i primitivi | Delega a Integer.toString |
"" + n | Uso rapido inline | Evitare nei cicli stretti |
String.format("%05d", n) | Spaziatura / formattazione | Sensibile alla locale, più lento |
Integer.toString(n, radix) | Testo esadecimale, binario, ottale | Radice 2–36 |
Un esempio pratico
Questo programma esegue ogni approccio sullo stesso valore, conferma che i tre metodi comuni producono stringhe uguali e mostra la formattazione e l'output con radici diverse.
Cosa trarre dall'esecuzione:
Integer.toString(-42),String.valueOf(-42)e"" + (-42)stampano tutti-42— i tre modi comuni sono intercambiabili per il testo decimale semplice.- La riga
equal?stampatrue, dimostrando che i tre risultati sono carattere per carattere identici, perchéString.valueOfe la concatenazione instradano entrambe attraversoInteger.toString. - Il segno negativo sopravvive alla conversione, e la stringa risultante ha lunghezza
3(-,4,2) — il meno conta come carattere. String.format("%05d", 42)stampa00042, mostrando come la direttiva%05daggiunga zeri fino a una larghezza minima di cinque.Integer.toBinaryString(255)stampa11111111eInteger.toString(255, 16)stampaff, dimostrando che unintpuò essere rappresentato in qualsiasi base, non solo decimale.
Esercitazione
Capitoli correlati
- Convertire una String in int — l'operazione inversa, con
Integer.parseInte la gestione degli errori. - Formattazione delle stringhe Java — approfondimento sulle direttive
String.formatcome%05d,%xe%,d. - Concatenazione di stringhe Java — perché
"" + ndiventa unStringBuildere quando questo è rilevante. - StringBuilder — il modo efficiente per assemblare molti numeri in un'unica stringa all'interno di un ciclo.