1
|
|
2
|
- Las hileras de caracteres son objetos que se utilizan para almacenar
cadenas de texto.
- Se utilizan para manipular el texto con operaciones comunes tales como
pasar a mayúscula, minúscula, editar, buscar la aparición de una letra o
sub-hilera dentro de otra hilera.
- Existen diferentes implementaciones para las hileras de caracteres
dependiendo de que tan estáticas o dinámicas sean.
|
3
|
- En Java existe la clase “String” para hileras de tamaño estático, y la
clase “StringBuffer” para hileras de tamaño dinámico.
- El “StringBuffer” permite ir almacenando texto en el mismo objeto y
agregar, borrar o cambiar caracteres individuales.
|
4
|
- Una instancia de la clase String es una hilera constante o “inmutable”
de caracteres.
- Una vez creado un String, el mismo no puede ser editado o modificado.
- A pesar de lo anterior, la clase String ofrece métodos eficientes para
crear nuevos String a partir de modificaciones de objetos existentes.
|
5
|
- Existen varias formas de declarar e inicializar un String.
- Asignando a una referencia de String un literal de String directamente.
- Ejemplo:
- String s = “ESTE ES UN LITERAL DE STRING”;
- O bien creando un String tomando con los caracteres correspondientes a
los valores almacenados en otro String, vector de caracteres, o vector
de bytes.
- String s = new String(arg);
- // arg puede ser una referencia a un:
- // String o “un literal como este”.
- // Vector de caracteres: char
[].
- // Vector de bytes: byte [].
- // StringBuffer que contiene texto.
|
6
|
- Hay que tener cuidado que aunque dos String tengan el mismo contenido no
necesariamente “son iguales”.
- Dos referencias a String son iguales si se “refieren al mismo objeto”.
No si el contenido de ambos es igual.
- En el siguiente caso s2 y s3 son iguales entre si, pero s1 aunque tiene
el mismo valor, no es igual a s2 ni s3.
|
7
|
- Entre las operaciones más comunes que se llevan a cabo con hileras de
caracteres están las siguientes:
- Obtener la letra que se encuentra en una posición dada.
- Conocer el tamaño de una hilera.
- Extraer un fragmento de texto desde una hilera.
- Comparar el contenido de dos hileras de caracteres.
- Comparar el contenido de dos hileras de caracteres ignorando entre
mayúsculas y minúsculas.
|
8
|
- Eliminar los blancos al inicio y al final de una hilera.
- Cambio de letras a mayúscula o minúscula.
- Búsqueda de un String dentro de otro.
- Reemplazo de una letra en la hilera original.
- Unir o fragmentar una hilera en sus partes.
- Determinar si una hilera inicia o termina con algún valor específico.
|
9
|
- Para obtener una letra que se encuentra en una posición dada existe el
método charAt(int) que recibe la posición dentro del String.
- Aunque es posible obtener la letra de una posición dada, no se puede
cambiar la letra dentro del mismo String ya que es estático.
|
10
|
- La clase String cuenta con un método que devuelve la cantidad de
caracteres que tiene almacenada una hilera.
- String.length() // devuelve el
tamaño
- Todos los caracteres incluyendo el carácter en blanco ‘ ‘ se toman en
cuenta.
- No lo confunda con la variable pública estática length con que cuentan
los vectores.
|
11
|
- Si se desea obtener un String con la subhilera se puede utilizar el
método substring(int desde,int hasta).
- Este método devuelve un nuevo String formado con las letras que van
desde la posición indicada en el primer parámetro hasta y sin incluir el
caracter que se encuentra en la posición del segundo parámetro.
- Si se desea un String a partir de una posición hasta el final se puede
utilizar el método substring(int desde) con solo el parámetro de la
posición inicial.
|
12
|
- Para comparar el contenido de dos hileras de caracteres se puede
utilizar el método compareTo(String otro). Este devuelve un número positivo si el
primer String es lexicográficamente mayor que el segundo (va después del
primero al ordenarlos alfabéticamente), devuelve un número negativo si
es menor, o bien un cero si el contenido de ambos es igual. O bien se
puede utilizar el método equals(String otro) que dice si el contenido de
un String es igual que otro.
- Recuerde que si compara con == lo que está comparando es si las
referencias a String “apuntan” o “se refieren” al mismo objeto, no se
está verificando si los dos String “contienen” algo similar.
|
13
|
- Para comparar el contenido de dos hileras de caracteres sin tomar en
cuenta la diferencia entre mayúsculas y minúsculas, se utiliza el método
equalsIgnoreCase(String otro).
- Este compara el String al que se le aplica el método con el que se
recibe como parámetro.
|
14
|
- El método trim permite producir un nuevo String luego de eliminar los
blancos al inicio y al final de un String.
- Algo como: “ texto “.trim()
- produce: “texto”
|
15
|
- Los métodos:
- starsWith(String inicio)
- endsWith(String terminacion)
- sirven para darse cuenta si una palabra inicia o termina con una
sub-hilera específica.
- Ambos devuelven un valor booleano.
|
16
|
- Para crear un nuevo String con todos los caracteres en mayúscula se
utiliza el método toUpperCase().
- Para convertir a minúscula se utiliza el método toLowerCase().
|
17
|
- El método replace(char letraVieja, char letraNueva) permite producir un
nuevo String donde la letra vieja ha sido sustituida por la letra nueva
en el String que es retornado.
|
18
|
- Debido a que los Strings no son editables, los métodos de modificación
generan una nueva copia del String modificado.
- El String original, sobre el cual se efectuó la operación, no es
modificado.
- El método concat(String otro) devuelve un nuevo String producto de unir
el String al que se le aplica el método con el otro String que se recibe
como parámetro.
|
19
|
- Sí, en Java existen métodos para extraer los caracteres de un objeto
tipo String.
- El más común es el método toCharArray() que produce un arreglo nuevo con
los caracteres contenidos en el String al que se le aplica.
|
20
|
|
21
|
|
22
|
- El StringBuffer es un objeto que
permite almacenar caracteres e ir ajustando su contenido de manera
dinámica dentro del mismo objeto.
- Es utilizado básicamente para editar texto.
|
23
|
- El uso más común es la edición dinámica de texto.
- La ventaja es que permite que se le agreguen fragmentos de texto al
final de la hilera mediante el método como append(String agregado).
- También pueden insertar fragmentos de texto en medio de una hilera con
el método insert(int posición, String fragmento), en este caso se pueden
insertar caracteres a partir del punto específico indicado por la
posición. Los demás caracteres se
desplazan hacia la derecha a partir del punto donde se lleva a cabo la
inserción.
|
24
|
- Además es posible sustituir el carácter que se encuentra en una posición
dada con el método setCharAt(int posición, char nuevo).
- Recuerde que estos métodos no existen en los String porque los mismos no
son modificables, los String generan copias mientras que el StringBuffer
es modificado internamente sin generar copias.
|
25
|
- Los métodos insert() y append() del StringBuffer permiten modificar la
hilera de texto que contiene, al igual que el setCharAt(int,char)
- Por ejemplo:
- StringBuffer expresion = new
StringBuffer();
- expresion.append(3);
- expresion.append(2);
- expresion.append('X');
- expresion.insert(1," +
");
- expresion.insert(5," =
");
- expresion.setCharAt(8,'5');
- System.out.println(expresion);
- Produce como resultado el String:
- 3+2=5
|
26
|
- El operador binario de concatenación + es implementado por el compilador
de java mediante el uso de StringBuffers.
- Una expresión como la siguiente:
- String mensaje = “Peso = " + 179.25 + “ kilos”;
- equivale a:
- String mensaje = new StringBuffer().append(“Peso =
").append(179.25).append(“ kilos") .toString();
|
27
|
|
28
|
|
29
|
- El método split(“\\s”) permite fragmentar una hilera y produce un vector
de String con los fragmentos producidos luego de separar la tira.
- La expresión predefinida \s indica que los delimitadores de cada término
son: los blancos, tabuladores, cambios de línes, caracteres de ajuste y
de retorno.
- Nota: El uso de la clase java.util.StringTokenizer() que sirve para el
mismo fin ha sido declarado como obsoleto, y fue sustituido por el split()
que sí pertenece a la clase String.
|
30
|
|
31
|
|
32
|
|
33
|
|
34
|
- La clase String es incluida automáticamente dentro del paquete
java.lang.
- Para más información se puede visitar la documentación en línea:
- http://www.javasoft.com
|