Formación informática

Java | Joomla | MySQL

Curso de Java – Tema 18: Clase String

Algunas palabras en inglés para tratar con la clase StringPara acceder a su definición oficial en la API de Java 8 tenemos que pulsar sobre este enlace.

¿Qué es?

Es una clase de Java de tipo final dentro de la que se crea un objeto de la clase String, que a su vez,  crea un array de caracteres de una forma similar a como lo hace el lenguaje C++. A este array se accede a través de las funciones miembro de la clase.

Esta clase crea un objeto inmutable. Esto quiere decir que cada vez que modificamos su contenido se crea un nuevo objeto (con la cadena nueva) y se desecha el anterior.

Los strings u objetos de la clase String se pueden crear explícitamente o implícitamente. Para crear un string implícitamente basta poner una cadena de caracteres entre comillas dobles. Por ejemplo, cuando se escribe el código siguiente Java crea un objeto de la clase String automáticamente que contiene el texto entre comillas:

	System.out.println("El primer programa");

Un string nulo es aquél que no contiene caracteres, pero es un objeto de la clase String.  Para crear un string nulo se puede hacer de estas dos formas: bien usando la cadena vacía bien el constructor vacío:

String str="";
String str=new String();

Sin embargo, si escribimos el código siguiente estamos declarando un objeto str de la clase String, pero aún no se ha creado ningún objeto de esta clase puesto que no hemos usado el constructor de la clase:

String str;

Métodos más empleados

Una vez creado un objeto de la clase String podemos obtener información relevante acerca del objeto a través de las funciones miembro.

Para aplicar un método de una clase tenemos que escribir el nombre de la variable seguido de un punto y el nombre método que queremos emplear. Por ejemplo, para obtener la longitud o número de caracteres que guarda un string se llama a la función miembro length que nos devuelve un número entero:

String str="El primer programa"
int longitud=str.length();

Podemos conocer si un string comienza con un determinado prefijo, llamando al método startsWith, que devuelve true o false, según que el string comience o no por dicho prefijo. En este ejemplo la variable resultado tomará el valor true:

String str="El primer programa";
boolean resultado=str.startsWith("El");

De modo similar, podemos saber si un string finaliza con un conjunto dado de caracteres, mediante la función miembro endsWith.

String str="El primer programa";
boolean resultado=str.endsWith("programa");

Si se quiere obtener la posición de la primera ocurrencia de un carácter o conjunto de caracteres, se usa la función indexOf:

String str="El primer programa";
int pos=str.indexOf('p');

Para obtener las sucesivas posiciones de la letra p, se llama a otra versión de la misma función en la que el segundo argumento le dice a la función indexOf que empiece a buscar la primera ocurrencia de la letra p a partir de la posición pos+1:

pos=str.indexOf('p', pos+1);

Otra versión de indexOf busca la primera ocurrencia de un substring dentro del string:

String str="El primer programa";
int pos=str.indexOf("pro");

La comparación de strings nos da la oportunidad de distinguir entre el operador lógico == y la función miembro equals de la clase String. En el siguiente código se obtendrá que str1 y str2 son distintos objetos pero con el mismo contenido puesto que str1 y str2 ocupan posiciones distintas en memoria pero guardan los mismos datos:

String str1="El lenguaje Java";
String str2=new String("El lenguaje Java");
	if(str1==str2){
		System.out.println("Los mismos objetos");
	}else{
		System.out.println("Distintos objetos");
	}
	
		if(str1.equals(str2)){
		System.out.println("El mismo contenido");
	}else{
		System.out.println("Distinto contenido");
	}

Si ahora cambiemos la segunda sentencia y escribimos que los objetos str1 y str2 guardan la misma referencia al objeto de la clase String creado, la expresión (str1==str2) devolverá true:

String str1="El lenguaje Java";
String str2=str1;
System.out.prinln("Son el mimso objeto "+(str1==str2);

Así pues, el método equals compara un string con un objeto cualquiera que puede ser otro string, y devuelve true cuando dos strings son iguales o false si son distintos. En el siguiente código el método devolverá como resultado el valor true:

String str="El lenguaje Java";
boolean resultado=str.equals("El lenguaje Java");

La función miembro comapareTo devuelve un entero menor que cero si el objeto string es menor (en orden alfabético) que el string dado, cero si son iguales, y mayor que cero si el objeto string es mayor que el string dado. En el siguiente código, la variable entera resultado tomará un valor mayor que cero, ya que Tomás está después de Alberto en orden alfabético. La variable entera resultado tomará un valor menor que cero, ya que Alberto está antes que Tomás en orden alfabético; la variable entera resultado tomará un valor menor que cero, ya que Alberto está antes que Tomás en orden alfabético:

String str="Tomás";
int resultado=str.compareTo("Alberto");
String str="Alberto";
int resultado=str.compareTo("Tomás");

En muchas ocasiones es necesario extraer una porción o substring de un string dado. Para este propósito hay una función miembro de la clase String denominada substring. Para extraer un substring desde una posición determinada hasta el final del string escribimos:

String str="El lenguaje Java";
String subStr=str.substring(12);

Una segunda versión de la función miembro substring, nos permite extraer un substring especificando la posición de comienzo y el final. En el siguiente código, se obtendrá el substring "lenguaje". Recuérdese, que las posiciones se empiezan a contar desde cero:

String str="El lenguaje Java";
String subStr=str.substring(3, 11);

Para convertir un número en string se emplea la función miembro estática valueOf:

int valor=10;
String str=String.valueOf(valor);

La clase String proporciona versiones de valueOf para convertir los datos primitivos: int, long, float, double. Esta función se emplea mucho cuando programamos applets, por ejemplo, cuando queremos mostrar el resultado de un cálculo en el área de trabajo de la ventana o en un control de edición.

Cuando introducimos caracteres en un control de edición a veces es inevitable que aparezcan espacios ya sea al comienzo o al final. Para eliminar estos espacios tenemos la función miembro trim:

	String str="  12 ";
	String str1=str.trim();

Para convertir un string en número entero, primero quitamos los espacios en blanco al principio y al final y luego, llamamos a la función miembro estática parseInt de la clase Integer (clase envolvente que describe los números enteros)

String str="  12 ";
int numero=Integer.parseInt(str.trim());

Para CODIGO (double) se requieren dos pasos: convertir el string en un objeto de la clase envolvente Double, mediante la función miembro estática valueOf, y a continuación convertir el objeto de la clase Double en un tipo primitivo double mediante la función doubleValue:

String str="12.35 ";
double numero=Double.valueOf(str).doubleValue();

Se puede hacer el mismo procedimiento para convertir un string a número entero:

String str="12";
int numero=Integer.valueOf(str).intValue();
Curso de Java – Tema 17: Clase Integer <- | -> Curso de Java – Tema 19: clase StringBuffer
Curso de Java - Índice ejercicios nivel básico

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información