4.7 Anexos
Desde el punto de vista de la programación diaria, uno de los tipos de datos más importantes de Java es String. String define y admite cadenas de caracteres. En algunos otros lenguajes de programación, una cadena o string es una matriz o array de caracteres. Este no es el caso con Java. En Java, los String son objetos.
En realidad, has estado usando la clase String desde el comienzo del curso, pero no lo sabías. Cuando crea un literal de cadena, en realidad está creando un objeto String. Por ejemplo, en la declaración:
La clase String es bastante grande, y solo veremos una pequeña parte aquí.
Construyendo String¶
Puede construir un String igual que construye cualquier otro tipo de objeto: utilizando new y llamando al constructor String. Por ejemplo:
Esto crea un objeto String llamado str que contiene la cadena de caracteres “Hola”. También puedes construir una String desde otro String. Por ejemplo:
Después de que esta secuencia se ejecuta, str2 también contendrá la cadena de caracteres “Hola”.
Otra forma fácil de crear una cadena se muestra aquí:
En este caso, str se inicializa en la secuencia de caracteres “Estoy aprendiendo sobre String en JavadesdeCero.”.
Una vez que hayas creado un objeto String, puedes usarlo en cualquier lugar que permita una cadena entrecomillada. Por ejemplo, puedes usar un objeto String como argumento para println(), como se muestra en este ejemplo:
Operando con Métodos de la clase String¶
La clase String contiene varios métodos que operan en cadenas. Aquí se detallan todos los métodos:
int length(): Devuelve la cantidad de caracteres del String.
Char charAt(int i): Devuelve el carácter en el índice i.
String substring(int i): Devuelve la subcadena del i-ésimo carácter de índice al final.
String substring(int i, int j): Devuelve la subcadena del índice i a j-1.
String concat(String str): Concatena la cadena especificada al final de esta cadena.
int indexOf(String s): Devuelve el índice dentro de la cadena de la primera aparición de la cadena especificada.
int indexOf(String s, int i): Devuelve el índice dentro de la cadena de la primera aparición de la cadena especificada, comenzando en el índice especificado.
int lastIndexOf(int ch): Devuelve el índice dentro de la cadena de la última aparición de la cadena especificada.
boolean equals(Objeto otroObjeto): Compara este String con el objeto especificado.
boolean equalsIgnoreCase(String otroString): Compares string to another string, ignoring case considerations.
int compareTo(String otroString): Compara dos cadenas lexicográficamente.
int compareToIgnoreCase(String otroString): Compara dos cadenas lexicográficamente, ignorando las consideraciones case.
En este caso, no considerará el case de una letra (ignorará si está en mayúscula o minúscula).
String toLowerCase(): Convierte todos los caracteres de String a minúsculas.
String toUpperCase(): Convierte todos los caracteres de String a mayúsculas.
String trim(): Devuelve la copia de la cadena, eliminando espacios en blanco en ambos extremos. No afecta los espacios en blanco en el medio.
String replace(char oldChar, char newChar): Devuelve una nueva cadena al reemplazar todas las ocurrencias de oldChar con newChar.
s1 sigue siendo yavadesdecero y s2 javadesdecero.
String replaceAll(String regex, String replacement): devuelve una cadena que reemplaza toda la secuencia de caracteres que coinciden con la expresión regularregexpor la cadena de reemplazoreplacement.
Otras expresiones regulares (entre otras muchísimas):
\wCualquier cosa que sea un carácter de palabra.\WCualquier cosa que no sea un carácter de palabra (incluida la puntuación, etc.).\sCualquier cosa que sea un carácter de espacio (incluido el espacio, los caracteres de tabulación, etc.).\SCualquier cosa que no sea un carácter de espacio (incluidas letras y números, así como puntuación, etc.).
Debes escapar de la barra invertida si deseas que \s alcance el motor de expresiones regulares, lo que da como resultado \\s).
Más información
Más información sobre expresiones regulares en java: https://www.vogella.com/tutorials/JavaRegularExpressions/article.html
Arrays de String¶
Al igual que cualquier otro tipo de datos, los String se pueden ensamblar en arrays.
Los String son inmutables¶
El contenido de un objeto String es inmutable. Es decir, una vez creada, la secuencia de caracteres que compone la cadena no se puede modificar. Esta restricción permite a Java implementar cadenas de manera más eficiente. Aunque esto probablemente suene como un serio inconveniente, no lo es.
Cuando necesites una cadena que sea una variación de una que ya existe, simplemente crea una nueva cadena que contenga los cambios deseados. Como los objetos String no utilizados se recolectan de forma automática, ni siquiera tienes que preocuparte por lo que sucede con las cadenas descartadas. Sin embargo, debe quedar claro que las variables de referencia de cadena pueden, por supuesto, cambiar el objeto al que hacen referencia. Es solo que el contenido de un objeto String específico no se puede cambiar después de haber sido creado.
Para comprender completamente por qué las cadenas inmutables no son un obstáculo, utilizaremos otro de los métodos de String: substring(). El método substring() devuelve una nueva cadena que contiene una parte especificada de la cadena invocadora. Como se fabrica un nuevo objeto String que contiene la subcadena, la cadena original no se altera y la regla de inmutabilidad permanece intacta. La forma de substring( ) que vamos a utilizar se muestra aquí:
Aquí, beginIndex especifica el índice inicial, y endIndex especifica el punto final. Aquí hay un programa que demuestra el uso de substring( ) y el principio de cadenas inmutables:
Como puedes ver, la cadena original str no se modifica, y substr contiene la subcadena.
String en Argumentos de Línea de Comandos¶
Ahora que conoces la clase String, puedes comprender el parámetro args en main() que ha estado en cada programa mostrado hasta ahora. Muchos programas aceptan lo que se llaman argumentos de línea de comandos. Un argumento de línea de comandos es la información que sigue directamente el nombre del programa en la línea de comando cuando se ejecuta.
Para acceder a los argumentos de la línea de comandos dentro de un programa Java es bastante fácil: se almacenan como cadenas en la matriz String pasada a main(). Por ejemplo, el siguiente programa muestra todos los argumentos de línea de comandos con los que se llama:
Observa que el primer argumento se almacena en el índice 0, el segundo argumento se almacena en el índice 1, y así sucesivamente.
Para tener una idea de la forma en que se pueden usar los argumentos de la línea de comandos, considera el siguiente programa. Se necesita un argumento de línea de comandos que especifique el nombre de una persona. Luego busca a través de una matriz bidimensional de cadenas para ese nombre. Si encuentras una coincidencia, muestra el número de teléfono de esa persona.