W3docs

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:

ApproccioIdeale perNota
Integer.toString(n)Testo decimale sempliceCanonico; mai null
String.valueOf(n)Un solo nome per tutti i primitiviDelega a Integer.toString
"" + nUso rapido inlineEvitare nei cicli stretti
String.format("%05d", n)Spaziatura / formattazioneSensibile alla locale, più lento
Integer.toString(n, radix)Testo esadecimale, binario, ottaleRadice 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.

java— editable, runs on the server

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? stampa true, dimostrando che i tre risultati sono carattere per carattere identici, perché String.valueOf e la concatenazione instradano entrambe attraverso Integer.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) stampa 00042, mostrando come la direttiva %05d aggiunga zeri fino a una larghezza minima di cinque.
  • Integer.toBinaryString(255) stampa 11111111 e Integer.toString(255, 16) stampa ff, dimostrando che un int può essere rappresentato in qualsiasi base, non solo decimale.

Esercitazione

Pratica
Quale chiamata converte un int nella sua forma String decimale semplice ed è il metodo canonico a cui String.valueOf(int) delega internamente?
Quale chiamata converte un int nella sua forma String decimale semplice ed è il metodo canonico a cui String.valueOf(int) delega internamente?

Capitoli correlati

Was this page helpful?