Laclase&String& - Laboratorio SS.OO. [Sistemas...

5
13/02/12 1 La clase String Curso de Programación en Java Jesús Montes Sánchez jmontes@fi.upm.es Carácter Valores numéricos que se usan para representar caracteres (letras, números, símbolos) usando la tabla Unicode 16 bit en vez de los 7 u 8 bits que ofrece ASCII Tipo char Los valores se expresan entre comillas simples: ‘a’, ‘4’, ‘#’ String Una serie de caracteres tratados como si fuesen una única en[dad Un string puede incluir letras, dígitos y caracteres especiales (+, $,...) Un string es un objeto de la clase String Su valor es inmutable Nunca va a cambiar Las constantes de string se escriben entre comillas doble “Hola Mundo” Generación Hay muchas formas Por ahora sólo veremos éstas String s = new String(“hola”); char[] arrayChars = {‘h’,’o’,’l’,’a’}; String s = new String(arrayChars); String s = “hola” + “adios”; Es un objeto ‘h’ ‘o’ ‘l’ ‘a’ ‘c’ ‘a’ ‘s’ ‘a’ String miString1 = “hola”; String miString2 = “casa”; miString1 = miString2 Métodos Tiene varios: de instancia de clase Los más u[lizados son de instancia charAt() concat() equals() length() replace() substring() toCharArray() toLowerCase() toUpperCase()

Transcript of Laclase&String& - Laboratorio SS.OO. [Sistemas...

Page 1: Laclase&String& - Laboratorio SS.OO. [Sistemas Operativos]laurel.datsi.fi.upm.es/.../docencia/cursos/java/2012/clase_strings.pdf · String&concat(Strings)! ... &Java compruebasi&yase&haescrito&antes&y,&si&yaexiste,&no&creaun&

13/02/12  

1  

La  clase  String  Curso  de  Programación  en  Java  

   

Jesús  Montes  Sánchez  [email protected]  

Carácter  

!   Valores  numéricos  que  se  usan  para  representar  caracteres  (letras,  números,  símbolos)  usando  la  tabla  Unicode  !   16  bit  en  vez  de  los  7  u  8  bits  que  ofrece  ASCII  

!   Tipo  char

!   Los  valores  se  expresan  entre  comillas  simples:  ‘a’,  ‘4’,  ‘#’  

String  

!   Una  serie  de  caracteres  tratados  como  si  fuesen  una  única  en[dad  

!   Un  string  puede  incluir  letras,  dígitos  y  caracteres  especiales  (+,$,...)  

!   Un  string  es  un  objeto  de  la  clase  String  

!   Su  valor  es  inmutable  !   Nunca  va  a  cambiar  

!   Las  constantes  de  string  se  escriben  entre  comillas  doble  !   “Hola  Mundo”  

Generación  

!   Hay  muchas  formas  

!   Por  ahora  sólo  veremos  éstas  

String  s  =  new  String(“hola”);  

char[]  arrayChars  =  {‘h’,’o’,’l’,’a’};  

String  s  =  new  String(arrayChars);  

String  s  =  “hola”  +  “adios”;  

 

Es  un  objeto  

‘h’  ‘o’   ‘l’   ‘a’  

‘c’  ‘a’  ‘s’  ‘a’  

String miString1 = “hola”;!

String miString2 = “casa”;!

miString1 = miString2!

Métodos  

!   Tiene  varios:  !   de  instancia  !   de  clase  

!   Los  más  u[lizados  son  de  instancia  ! charAt()  ! concat()  ! equals()  ! length()  ! replace()  ! substring()  ! toCharArray()  ! toLowerCase()  ! toUpperCase()  

Page 2: Laclase&String& - Laboratorio SS.OO. [Sistemas Operativos]laurel.datsi.fi.upm.es/.../docencia/cursos/java/2012/clase_strings.pdf · String&concat(Strings)! ... &Java compruebasi&yase&haescrito&antes&y,&si&yaexiste,&no&creaun&

13/02/12  

2  

char  charAt(int  index)  

!   Devuelve  el  carácter  indicado  por  el  índice  

!   Al  igual  que  los  arrays  la  primera  posición  es  la  0  

 

String x = “avion”;!

System.out.println( x.charAt(2) );!

String  concat(String  s)  

!   Devuelve  un  nuevo  string  adjuntando  el  valor  del  string  pasado  como  parámetro  al  valor  del  string  actual.  

 

String x = “hola”;!

System.out.println( x.concat(“ mundo!”) );!

boolean  equals(String  s)  

!   Devuelve  verdadero  si  el  valor  del  string  pasado  es  el  mismo  que  el  actual  

 

String x = “hola”;!

System.out.println( x.equals(“HOLA”) );!

Comparando  Strings  

!   ¿Qué  pasaría  si  uso  ==  ?  ‘h’  ‘o’   ‘l’   ‘a’  

‘h’  ‘o’   ‘l’   ‘a’  

String uno = new String(“hola”);!String otro = new String(“hola”);!!¿System.out.println(uno==otro);?!

false!

Comparando  Strings  

!   ¿Y  con  esto?  

String uno = “hola”;!String otro = “hola”;!!¿System.out.println(uno==otro);?!

true!

Reserva  de  constantes  de  String  

!   Cada  vez  que  se  escribe  una  constante  de  String  (Ej  “hola”)  Java  comprueba  si  ya  se  ha  escrito  antes  y,  si  ya  existe,  no  crea  un  objeto  nuevo  !   Reaprovecha  la  referencia  

!   ¿Por  qué?  !   Eficiencia  !   Reduce  el  consumo  de  memoria  

!   Sólo  ocurre  con  las  constantes  de  Strings  

Page 3: Laclase&String& - Laboratorio SS.OO. [Sistemas Operativos]laurel.datsi.fi.upm.es/.../docencia/cursos/java/2012/clase_strings.pdf · String&concat(Strings)! ... &Java compruebasi&yase&haescrito&antes&y,&si&yaexiste,&no&creaun&

13/02/12  

3  

Reserva  de  constantes  de  String  

!   ¿Por  qué  pasa  esto?  

String uno = “hola”;!String otro = “hola”;!!

‘h’  ‘o’   ‘l’   ‘a’  

int  length()  

!   Devuelve  el  tamaño  del  String  

!   ¡Cuidado!  en  arrays  era  una  variable  y  aquí  es  un  método  

String x = “hola”;!

System.out.println( x.length() );!

 

String  replace(char  old,  char  new)  

!   Crea  un  nuevo  String  con  el  valor  del  String  actual  pero  cambiando  todas  las  apariciones  del  carácter  old  por  las  de  new  

String x = “oxoxox”;!

System.out.println( x.replace(‘o’,’O’) )!

La  salida  es:  

OxOxOx  

String  substring(int  begin,  int  end)  

!   Devuelve  un  nuevo  String  con  los  caracteres  del  primero  que  van  desde  la  posición  que  comienza  en  begin  hasta  los  de  la  posición  end  

String x =“holamundo”;!

System.out.println( x.substring(0,3) );!

// hola!

String  toLowerCase()  String  toUpperCase()  

!   Devuelve  un  nuevo  String  con  todos  los  caracteres  en  minúsculas  o  en  mayúsculas  

String x = ‘hola’;!

System.out.println( x.toUpperCase() );!

 

Imprimiría  

HOLA  

char[]  toCharArray()  

!   Crea  un  array  de  caracteres  y  convierte  el  String  a  un  array  de  chars  

String x = “hola”;!

char[] arrayDeChars = x.toCharArray();!

System.out.println( arrayDeChars[2] );!

Page 4: Laclase&String& - Laboratorio SS.OO. [Sistemas Operativos]laurel.datsi.fi.upm.es/.../docencia/cursos/java/2012/clase_strings.pdf · String&concat(Strings)! ... &Java compruebasi&yase&haescrito&antes&y,&si&yaexiste,&no&creaun&

13/02/12  

4  

Encadenamiento  de  llamadas  

String  x  =  "abc";    

String  y  =  x.concat("def").toUpperCase().replace('C','x');    

System.out.println("y  =  "  +  y);    

//  La  salida  sería  y  =  ABxDEF  

StringBuilder  

!   Los  Strings  son  inmutables  

!   ¿Y  si  vamos  a  hacer  muchas  operaciones  de  modificación?  !   Vamos  a  estar  creando  y  destruyendo  muchos  Strings  

!   Muy  ineficiente  

!   Los  objetos  StringBuilder  son  similares  a  los  String  !   ges[onan  un  conjunto  de  caracteres  

!   Pero  permiten  ser  modificados  sin  que  se  cree  y  se  destruya  un  objeto  cada  vez  

Creación  

!   Sólo  esta  forma  

StringBuilder  sb  =  new  StringBuilder(“abc”);  

 

StringBuilder  sb  =  “abc”;  //  ERROR  

 

Métodos  importantes  

! append  

! charAt  

! setCharAt  

! delete  

! insert  

!   reverse  

! toString  

StringBuilder  append(String  s)  

!   Adjunta  el  String  s  al  final  del  StringBuffer  actual  

!   Devuelve  una  referencia  a  sí  mismo  

StringBuilder  sb  =  new  StringBuilder(“hola”);  

sb.append(“mundo”);  

System.out.println(sb);  

char  charAt(int  index)  

!   Devuelve  el  carácter  indicado  por  el  índice  

!   Al  igual  que  los  arrays  la  primera  posición  es  la  0  

 

StringBuilder x = new StringBuilder(“avion”);!

System.out.println( x.charAt(2) );!

Page 5: Laclase&String& - Laboratorio SS.OO. [Sistemas Operativos]laurel.datsi.fi.upm.es/.../docencia/cursos/java/2012/clase_strings.pdf · String&concat(Strings)! ... &Java compruebasi&yase&haescrito&antes&y,&si&yaexiste,&no&creaun&

13/02/12  

5  

void  setCharAt(int  index,char  ch)  

!   Se  cambia  el  caracter  de  la  posición  index  al  valor  almacenado  en  ch  

!   Al  igual  que  los  arrays  la  primera  posición  es  la  0  

 

StringBuilder x = new StringBuilder(“avion”);!

x.setCharAt(1,’V’);!

System.out.println( x);!

// aVion!

StringBuilder  delete(int  start,int  end)  

!   Elimina  los  caracteres  desde  la  posición  start  hasta  la  end-­‐1  

!   Devuelve  una  referencia  a  sí  mismo  

StringBuilder x = new StringBuilder(“0123456789”);!

System.out.println( x.delete(4,6) );!

// Devolvería 01236789!

 

StringBuilder  insert(int  offset,  String  s)  

!   Inserta  el  String  pasado  en  la  posición  especificada  por  offset  

!   Devuelve  una  referencia  a  sí  mismo  

StringBuilder sb = new StringBuilder(“01234”);!

sb.insert(3,”-”);!

System.out.println(sb);!

// Devolvería 012-34!

StringBuilder  reverse()  

!   Invierte  los  caracteres  

!   Devuelve  una  referencia  a  sí  mismo  

StringBuilder sb = new StringBuilder(“01234”);!

sb.reverse();!

System.out.println( sb);!

//  Devolvería  43210  

 

String  toString()  

!   Devuelve  un  String  con  los  caracteres  del  StringBuffer  

StringBuilder sb = new StringBuilder(“test”);!

String s = sb.toString();!

System.out.println( s);!