Laclase&String& - Laboratorio SS.OO. [Sistemas...
-
Upload
nguyenkiet -
Category
Documents
-
view
223 -
download
0
Transcript of Laclase&String& - Laboratorio SS.OO. [Sistemas...
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()
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
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] );!
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) );!
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);!