Introducción a la Programación VIII Strings

6
3/16/11 1 Introducción a la Programación VIII Curso de Programación en Java San<ago Muelas Pascual smuelas@fi.upm.es Strings 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’, ‘#’ Tabla ASCII String Una serie de caracteres tratados como si fuesen una única en<dad Un string es un objeto de la clase String Un string puede incluir: letras, dígitos y caracteres especiales (+,$,...) Su valor es inmutable Las constantes de string se escriben entre comillas doble “Hola Mundo” ‘h’ ‘o’ ‘l’ ‘a’ Generación Hay muchas formas Por ahora sólo veremos éstas: String s = “hola”; String s = new String(“hola”); char[] arrayChars = {‘h’,’o’,’l’,’a’}; String s = new String(arrayChars); String s = “hola” + “adios”;

Transcript of Introducción a la Programación VIII Strings

Page 1: Introducción a la Programación VIII Strings

3/16/11 

Introducción a la Programación VIII 

Curso de Programación en Java   

San<ago Muelas Pascual [email protected] 

 

Strings 

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’, ‘#’ 

Tabla ASCII 

String 

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

  Un string es un objeto de la clase String 

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

  Su valor es inmutable 

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

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

Generación 

  Hay muchas formas 

  Por ahora sólo veremos éstas: 

String s = “hola”; 

String s = new String(“hola”);  

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

String s = new String(arrayChars);  

String s = “hola” + “adios”; 

 

Page 2: Introducción a la Programación VIII Strings

3/16/11 

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() 

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) );

Salida: i

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!”) );

Salida: hola 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”) );

Salida: false

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

Page 3: Introducción a la Programación VIII Strings

3/16/11 

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 

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() );

Salida: 4

 

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(‘x’,’X’) )

 

Salida: 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) );

Salida: hola

Page 4: Introducción a la Programación VIII Strings

3/16/11 

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() );

 

Salida: 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] );

Salida: l

Encadenamiento de llamadas 

String x = "abc";  

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

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

 

Salida: 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 

StringBuffer es una versión an<gua 

Creación 

  Sólo esta forma 

StringBuilder miejemplo = new StringBuilder(“abc”); 

 

StringBuilder miejemplo = “abc”; // ERROR 

 

Métodos importantes 

append 

charAt 

setCharAt 

delete 

insert 

  reverse 

toString 

Page 5: Introducción a la Programación VIII Strings

3/16/11 

StringBuilder append(String s) 

  Adjunta el String s al final del StringBuilder actual 

  Devuelve una referencia a sí mismo 

StringBuilder sb = new StringBuilder (“hola”); 

sb.append(“ mundo”); 

System.out.println(sb); 

 

Salida: hola mundo 

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) );

Salida: i

void setCharAt(int index,char ch) 

  Se modifica el carácter 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);

Salida: 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) );

Salida: 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);

Salida: 012-34

StringBuilder reverse() 

  Invierte los caracteres 

  Devuelve una referencia a sí mismo 

StringBuilder sb = new StringBuilder(“01234”);

sb.reverse();

System.out.println( sb);

Salida: 43210 

 

Page 6: Introducción a la Programación VIII Strings

3/16/11 

String toString() 

  Devuelve un String con los caracteres del StringBuilder 

StringBuilder sb = new StringBuilder(“test”);

String s = sb.toString();

System.out.println( s);