M3 - Programació estructurada / Continguts UF1: El tipus char

De wikiserver
Dreceres ràpides: navegació, cerca

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
  • Codis equivalents:
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.
  • Exemples:
\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'.
  • De char a número:
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).
  • Exemple:
'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
  • Exemple:
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