Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/10/2013, 14:52
MarronsDispatcher
 
Fecha de Ingreso: noviembre-2012
Mensajes: 40
Antigüedad: 11 años, 6 meses
Puntos: 7
Respuesta: duda basica java, arreglo o string dato

String extrictamente no es un tipo de dato, String es una clase dentro del paquete java.lang que hereda de la clase padre Object. Esta clase se utiliza generalmente para manipular cadenas de caracteres.

Aunque tu en el código puedas ver :
Código Java:
Ver original
  1. String str = "abc";
realmente se esta ejecutando algo como esto:
Código Java:
Ver original
  1. String str = new String("abc");
Es decir, es una clase, como otra cualquiera, con constructor incluido ..etc

En java, una cadena es una cadena, y un array de char otra distinta, eso no quiere decir, que por ejemplo cuando llamas al metodo toUpperCase() de la clase String, el internamente recorra la cadena, caracter a caracter como si de un array de char se tratara, para transformar en mayúsculas todos los caracteres.

Para finalizar comentar que la clase String es inmutable, es decir, no se puede modificar el objeto String, sino que crea nuevas instancias que lo reemplazan, por ejemplo:

Código Java:
Ver original
  1. String cadena = "mi cadena";
  2. cadena = cadena + " concateno";
  3. cadena = cadena + " otro mas";

En este caso no se modifica el objeto cadena, sino que se crean nuevos objetos String que reemplazan al anterior, internamente hace algo similar a lo siguiente...

Código Java:
Ver original
  1. String cadena = new String("mi cadena");
  2. cadena = new String ("mi cadena concateno");
  3. cadena = new String ("mi cadena concateno otro mas");

realmente en ningún momento se modifica el objeto cadena, sino que es reemplazado por otro nuevo, es decir se ha generado un nuevo objeto por cada concatenación, esto es sumamente costoso, por lo que siempre es recomendable utilizar las clases StringBuilder y StringBuffer para la concatenación de objetos String.

Es más, creo que a partir de la versión 8 de java, tienen pensado que el compilador no permita concatenar objetos String utilizando el operador "+", yo recomiendo desde aquí utilizar el método append() de las clases StringBuilder y StringBuffer.


Espero poder haberte ayudado.

Saludos.