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”;
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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”;
3/16/11
2
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
3/16/11
3
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
3/16/11
4
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
3/16/11
5
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
3/16/11
6
String toString()
Devuelve un String con los caracteres del StringBuilder