El tipus char
- El tipus de dades char representa un únic caràcter.
- Un caràcter literal està tancat entre cometes simples. J
- Java admet Unicode (16 bits originalment, ampliat per podre representar fins a 1.112.064 caràcters).
- Un caràcter Unicode de 16 bits consta de dos bytes precedits per '\u', expressat en 4 dígits hexadecimals; des de \u0000 fins a \uFFFF.
- Unicode inclou codi ASCII, des de \u0000 fins a\u007F corresponent als 128 caràcters ASCII (lletres majúscules i minúscules, dígits, puntuació i caràcters de control).
Caràcters
|
Valor Decimal
|
Valor Unicode
|
'0' a '9' |
48 a 57 |
\u0030 a \u0039
|
'A' a 'Z' |
65 a 90 |
\u0041 a \u005A
|
'a' a 'z' |
97 a 122 |
\u0061 a \u007A
|
char lletra = '\u0041';
char lletra = 'A';
- Recórrer els caràcters en ordre:
char lletra = '\u0041'; // lletra 'A'
lletra++;
println(lletra) // escriure la lletra 'B'
Seqüències d'escapament
- S'utilitza una notació especial (seqüència d'escapament) per poder representar caràcters especials:
System.out.println ("El profe diu: " Java és divertit ""); // ERROR de compilació!
- Consisteix en una barra invertida(\) seguida d'un caràcter o una combinació de dígits.
- \t seqüencia d'escapament per al caràcter Tab
- \u031b per representar un Unicode
- La seqüència d'escapament es considera com un únic caràcter.
System.out.println ("El profe diu: \" Java és divertit \"");
- Taula de seqüències d'escapament
Seqüència d'escapament
|
Resultat
|
Codi Unicode
|
Codi Unicode
|
\b |
Esborrat a l'esquerra |
\u0008 |
8
|
\t |
Tabulació |
\u0009 |
8
|
\n |
Nova línia |
\u000A |
10
|
\f |
Salt de pàgina |
\u000C |
12
|
\r |
Retrocés de carro |
\u000D |
13
|
\\ |
Caràcter '\' |
\u005C |
92
|
\" |
Caràcter '"' |
\u0022 |
34
|
Conversió entre char i tipus numèrics
- Un caràcter pot ser convertit en un tipus numèric i al contrari.
- Al convertir un int (4 bytes) en un char (2 bytes) només s'utilitzen els 16 bits de menys pes.
char ch = (char) 0XAB0041; // Només és guarden els quatre 'últims' dígits
System.out.println(ch); // (0041->65 en decimal) i s'imprimeix una 'A'.
- De número decimal a char:
char ch = (char)65.25; // Primer es converteix a int i desprès a char.
System.out.println(ch); // Imprimeix una 'A'.
int i =(int)'A'; // S'agafa el seu codi Unicode.
System.out.println(i); // Imprimeix un 65.
Comparació de caràcters
- Dos caràcters es poden comparar igual que comparem dos números (codis Unicode).
'a' < 'b' és cert perquè el codi per 'a' és 97 i el codi per 'b' és 98
'a' < 'A' és fals perquè el codi per 'a' és 97 i el codi per 'A' és 65
'1' < '8' és cert perquè el codi per '1' és 49 i el codi per '8' és 56
La classe Character
- Mètodes útils per testejar caràcters.
Mètode
|
Descripció
|
isDigit(ch) |
Retorna cert si el caràcter és un dígit
|
isLetter(ch) |
Retorna cert si el caràcter és una lletra
|
isLetterOfDigit(ch) |
Retorna cert si el caràcter és una lletra o un dígit
|
isLowerCase(ch) |
Retorna cert si el caràcter és una lletra minúscula
|
isUpperCase(ch) |
Retorna cert si el caràcter és una lletra majúscula
|
isWhitespace(ch) |
Retorna cert si el caràcter és un espai en blanc
|
toLowerCase(ch) |
Retorna el caràcter en minúscula
|
toUpperCase(ch) |
Retorna el caràcter en majúscula
|
public static void main(String[] args){
System.out.println("isDigit('a') és " + Character.isDigit('a'));
System.out.println("isLetter('a') és " + Character.isLetter('a'));
System.out.println("isLowerCase('a') és "+ Character.isLowerCase('a'));
System.out.println("isUpperCase('a') és "+ Character.isUpperCase('a'));
System.out.println("toLowerCase('T') és "+ Character.toLowerCase('T'));
System.out.println("toUpperCase('q') és "+ Character.toUpperCase('q'));}
isDigit('a') és false
isLetter('a') és true
isLowerCase('a') és true
isUpperCase('a') és false
toLowerCase('T') és t
toUpperCase('q') és Q