Ce face char
Un char păstrează un singur caracter, scris între apostrofuri: 'a'. Textul (mai multe caractere) se scrie între ghilimele și are tipul String. 'a' și "a" sunt lucruri diferite.
Intern, un char este un număr fără semn pe 16 biți (codul UTF-16 al caracterului), de aceea poți face calcule cu el: 'a' + 1 este 98, iar (char) ('a' + 1) este 'b'. Caracterele speciale se scriu cu secvențe escape: '\n' (rând nou), '\t' (tab), '\'' (apostrof), '\u0219' (cod Unicode).
Literele românești (ă, â, î, ș, ț) încap într-un char. Unele caractere, cum sunt multe emoji, au nevoie de doi char (o pereche surogat); pentru ele se lucrează cu „code points” (codePointAt).
Exemple
Exemplul 1: Caractere și coduri
Cast-ul la int arată codul numeric, iar cast-ul la char transformă un număr înapoi în caracter. Character are metode utile pentru verificări.
public class Main {
public static void main(String[] args) {
char litera = 'A';
char diacritica = 'ș';
System.out.println(litera + " are codul " + (int) litera);
System.out.println(diacritica + " are codul " + (int) diacritica);
System.out.println("următoarea literă după A: " + (char) (litera + 1));
System.out.println("'\u021b' = " + '\u021b');
System.out.println("este literă? " + Character.isLetter(diacritica));
System.out.println("majusculă: " + Character.toUpperCase(diacritica));
}
}
Rezultat
A are codul 65
ș are codul 537
următoarea literă după A: B
'ț' = ț
este literă? true
majusculă: Ș
Exemplul 2: Parcurgerea unui text caracter cu caracter
charAt(i) dă caracterul de la poziția i. Programul numără vocalele dintr-un nume de oraș.
public class Main {
public static void main(String[] args) {
String oras = "Timișoara";
int vocale = 0;
for (int i = 0; i < oras.length(); i++) {
char c = Character.toLowerCase(oras.charAt(i));
if ("aeiouăâî".indexOf(c) >= 0) {
vocale++;
}
}
System.out.println(oras + " are " + vocale + " vocale");
char[] litere = oras.toCharArray();
System.out.println("prima: " + litere[0] + ", ultima: " + litere[litere.length - 1]);
}
}
Rezultat
Timișoara are 5 vocale
prima: T, ultima: a
Greșeli frecvente
char c = "a";nu compilează: ghilimelele creează unString.'a' + 'b'dă numărul 195, nu textul „ab”: doicharadunați sunt numere. Pentru text, începe cu unString:"" + 'a' + 'b'.- Presupunerea că un caracter vizibil este întotdeauna un singur
char: emoji ca 😀 ocupă doi.
Comenzi înrudite
Variabile și tipuri primitive: O variabilă are un tip fix, declarat la creare; Java are 8 tipuri primitive: byte, short, int, long, float, double, char, boolean.String-uri și text blocks: Textul în Java este de tip String, imutabil; text blocks („”” … „””) permit texte pe mai multe rânduri fără \n și ghilimele escape.int, long, short și byte: Tipurile întregi din Java: int (32 de biți) pentru aproape orice, long pentru valori mari, short și byte pentru economie de memorie.