Le type primitif char de Java est une représentation sur 16 bits d'un seul caractère Unicode.
Le type char repose sur la spécification Unicode d'origine, qui utilisait 16 bits pour représenter les caractères.
Cela suffit à couvrir la plupart des lettres courantes et couvre les caractères compris entre 0x0000 et 0xFFFF.
Depuis, la spécification a étendu la plage des caractères possibles jusqu'à 0x01FFFF.
Plusieurs char peuvent former une string, comme "word", ou bien les char peuvent être traités indépendamment.
Un littéral char est entouré de guillemets simples (par exemple 'A').
char lowerA = 'a';
char upperB = 'B';
char d'une String
La méthode String.toCharArray renvoie les caractères d'une String sous forme de tableau.
Comme mentionné dans les tableaux, on peut utiliser une boucle for pour parcourir le tableau.
String text = "Hello";
char[] asArray = text.toCharArray();
for (char ch: asArray) {
System.out.println(ch);
}
// Outputs:
// H
// e
// l
// l
// o
Il existe de nombreuses méthodes intégrées de la bibliothèque standard pour inspecter et manipuler les char.
On les trouve sous forme de méthodes statiques de la classe java.lang.Character.
Voici quelques exemples :
Character.isWhitespace(' '); // true
Character.isWhitespace('#'); // false
Character.isLetter('a'); // true
Character.isLetter('3'); // false
Character.isDigit('6'); // true
Character.isDigit('?'); // false
Certaines méthodes de la classe Character ont une surcharge qui leur permet de prendre soit un char, soit un int.
Par exemple, isDigit en a une qui accepte un char et une autre un int.
Comme mentionné plus haut, le type char ne peut représenter que les caractères compris entre 0x0000 et 0xFFFF.
Le type int, lui, peut représenter tous les caractères, d'où les surcharges pour int.
char à une String
On peut utiliser l'opérateur + pour ajouter un char à une String.
'a' + " banana" // => "a banana"
"banana " + 'a' // => "banana a"
Fais bien attention à ne pas utiliser + pour concaténer deux char afin de former une String !
Additionner deux char de cette façon donne un int, pas une String !
Par exemple :
'b' + 'c';
// => 197 (not the String "bc")
En effet, Java promeut le char en int (voir 4.2 Primitive Types and Values de la Java Language Specification).
Toutefois, lorsqu'il y a beaucoup de caractères à ajouter, il peut être plus efficace d'utiliser plutôt un StringBuilder :
StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');
String builtString = builder.toString();
// => abc