Il tipo primitivo char di Java è una rappresentazione a 16 bit di un singolo carattere Unicode.
Il tipo char si basa sulla specifica Unicode originale, che usava 16 bit per rappresentare i caratteri.
Questo basta a coprire la maggior parte delle lettere comuni e copre i caratteri nell'intervallo da 0x0000 a 0xFFFF.
Da allora la specifica ha esteso l'intervallo dei caratteri possibili fino a 0x01FFFF.
Più char possono comporre una stringa, come "word", oppure i char possono essere elaborati singolarmente.
Un letterale char è racchiuso tra virgolette singole (ad es. 'A').
char lowerA = 'a';
char upperB = 'B';
char di una String
Il metodo String.toCharArray restituisce i caratteri di una stringa come array.
Come accennato in array, puoi usare un ciclo for per scorrere l'array.
String text = "Hello";
char[] asArray = text.toCharArray();
for (char ch: asArray) {
System.out.println(ch);
}
// Outputs:
// H
// e
// l
// l
// o
Ci sono molti metodi integrati della libreria per esaminare e manipolare i char.
Li puoi trovare come metodi statici della classe java.lang.Character.
Ecco alcuni esempi:
Character.isWhitespace(' '); // true
Character.isWhitespace('#'); // false
Character.isLetter('a'); // true
Character.isLetter('3'); // false
Character.isDigit('6'); // true
Character.isDigit('?'); // false
Alcuni metodi della classe Character hanno un overload che permette di accettare sia un char sia un int.
Per esempio, isDigit ne ha uno che accetta un char e un altro un int.
Come accennato prima, il tipo char può rappresentare solo i caratteri nell'intervallo da 0x0000 a 0xFFFF.
L'int, invece, può rappresentare tutti i caratteri, da cui gli overload per int.
char a una String
L'operatore + può essere usato per aggiungere un char a una String.
'a' + " banana" // => "a banana"
"banana " + 'a' // => "banana a"
Fai attenzione a non usare + per unire due char insieme per formare una String!
Aggiungere due char in questo modo dà un int, non una String!
Per esempio:
'b' + 'c';
// => 197 (not the String "bc")
Questo perché Java promuove il char a un int (vedi 4.2 Primitive Types and Values della Java Language Specification).
Tuttavia, quando ci sono molti caratteri da aggiungere, può essere più efficiente usare invece uno StringBuilder:
StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');
String builtString = builder.toString();
// => abc