Diferència entre revisions de la pàgina «M3 - Programació estructurada / Continguts UF1: El tipus char»

De wikiserver
Dreceres ràpides: navegació, cerca
(Seqüències d'escapament)
(La classe Character)
 
(Hi ha 22 revisions intermèdies del mateix usuari que no es mostren)
Línia 18: Línia 18:
 
|'0' a '9'||48 a 57||\u0030 a \u0039
 
|'0' a '9'||48 a 57||\u0030 a \u0039
 
|-
 
|-
|A' a 'Z'||65 a 90||\u0041 a \u005A
+
|'A' a 'Z'||65 a 90||\u0041 a \u005A
 
|-
 
|-
 
|'a' a 'z'||97 a 122||\u0061 a \u007A
 
|'a' a 'z'||97 a 122||\u0061 a \u007A
Línia 57: Línia 57:
  
 
:* Taula de seqüències d'escapament
 
:* Taula de seqüències d'escapament
 
Codi Unicode\bEsborrat a l'esquerra\u00088\tTabulació\u00098\nNova línia\u000A10\fSalt de pàgina\u000C12\rRetrocés de carro\u000D13\\Caràcter '\'\u005C92\"Caràcter ' " '\u002234
 
  
 
{|border="2" cellpadding="4" cellspacing="0" style="margin: 0 auto; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
 
{|border="2" cellpadding="4" cellspacing="0" style="margin: 0 auto; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
! align="center" width="100 px" style="background:Lavender; color:Black"|Seqüència d'escapament
+
! align="center" width="200 px" style="background:Lavender; color:Black"|Seqüència d'escapament
! align="center" width="150 px" style="background:Lavender; color:Black"|Resultat
+
! align="center" width="200 px" style="background:Lavender; color:Black"|Resultat
! align="center" width="150 px" style="background:Lavender; color:Black"|Codi Unicode
+
! align="center" width="100 px" style="background:Lavender; color:Black"|Codi Unicode
! align="center" width="150 px" style="background:Lavender; color:Black"|Codi Unicode
+
! align="center" width="100 px" style="background:Lavender; color:Black"|Codi Unicode
 
|-
 
|-
|'0' a '9'||48 a 57||\u0030 a \u0039
+
| align="center"| \b||Esborrat a l'esquerra||align="center"| \u0008||align="center"| 8
 
|-
 
|-
|A' a 'Z'||65 a 90||\u0041 a \u005A
+
| align="center"| \t||Tabulació||align="center"| \u0009||align="center"| 8
 
|-
 
|-
|'a' a 'z'||97 a 122||\u0061 a \u007A
+
| align="center"| \n||Nova línia||align="center"| \u000A||align="center"| 10
 +
|-
 +
| align="center"| \f||Salt de pàgina||align="center"| \u000C||align="center"| 12
 +
|-
 +
| align="center"| \r||Retrocés de carro||align="center"| \u000D||align="center"| 13
 +
|-
 +
| align="center"| \\||Caràcter '\'||align="center"| \u005C||align="center"| 92
 +
|-
 +
| align="center"| \"||Caràcter '"'||align="center"| \u0022||align="center"| 34
 
|}
 
|}
  
 
==Conversió entre char i tipus numèrics==
 
==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.
 +
<source lang = "java">
 +
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'.
 +
</source>
 +
 +
:* De número decimal a char:
 +
<source lang = "java">
 +
char ch = (char)65.25;    // Primer es converteix a int i desprès a char.
 +
System.out.println(ch);    // Imprimeix una 'A'.
 +
</source>
 +
 +
:* De char a número:
 +
<source lang = "java">
 +
int i =(int)'A';          // S'agafa el seu codi Unicode.
 +
System.out.println(i);    // Imprimeix un 65.
 +
</source>
  
 
==Comparació de caràcters==
 
==Comparació de caràcters==
 +
 +
:* Dos  caràcters  es  poden  comparar  igual  que  comparem  dos  números (codis Unicode). 
 +
 +
:* Exemple:
 +
<source lang = "java">
 +
'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
 +
</source>
  
 
==La classe Character==
 
==La classe Character==
  
==Exercicis==
+
:* Mètodes útils per testejar caràcters.
 +
 
 +
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
 +
! align="left" width="150 px" style="background:Lavender; color:Black"|Mètode
 +
! align="left" width="350 px" style="background:Lavender; color:Black"|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:
 +
<source lang = "java">
 +
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'));}
 +
</source>
 +
 
 +
<pre>
 +
  isDigit('a') és false
 +
  isLetter('a') és true
 +
  isLowerCase('a') és true
 +
  isUpperCase('a') és false
 +
  toLowerCase('T') és t
 +
  toUpperCase('q') és Q
 +
</pre>

Revisió de 21:32, 15 nov 2020

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