Junior
Háblame de la clase String en el lenguaje de programación Java.
sobes.tech AI
Respuesta de la IA
La clase String en Java representa una secuencia inmutable de caracteres.
Características y particularidades principales:
- Inmutabilidad: Después de crear un objeto
String, su contenido no puede ser modificado. Cualquier operación que parezca modificar la cadena (por ejemplo, concatenación) en realidad crea un nuevo objetoString. Esto mejora la seguridad y la seguridad en entornos multihilo. - Sobrecarga del operador
+: Para las cadenas, se ha sobrecargado el operador+para realizar concatenaciones. - Dos formas de creación:
- Con un literal de cadena:
String s1 = "Hello";- creado en el pool de cadenas (String Pool). - Usando el operador
new:String s2 = new String("World");- creado en el montón (Heap), puede crear un nuevo objeto incluso si ya existe un literal igual en el pool.
- Con un literal de cadena:
- Pool de cadenas (String Pool): Área en el montón donde se almacenan los literales de cadenas para optimizar la memoria. Al crear un literal de cadena, la JVM primero verifica el pool. Si la cadena ya existe, devuelve una referencia a ese objeto. Si no, crea uno nuevo y lo añade al pool.
- Métodos útiles principales:
length(): Devuelve la longitud de la cadena.charAt(int index): Devuelve el carácter en la posición especificada.substring(int beginIndex, int endIndex): Devuelve una subcadena.contains(CharSequence s): Verifica si la cadena contiene la secuencia de caracteres especificada.indexOf(int ch)/indexOf(String str): Devuelve la primera posición de la ocurrencia del carácter o subcadena.equals(Object anObject): Compara el contenido de las cadenas. Es importante usarequals()para comparar contenido, no==, que compara referencias.equalsIgnoreCase(String anotherString): Compara cadenas sin distinguir mayúsculas/minúsculas.replace(char oldChar, char newChar)/replace(CharSequence target, CharSequence replacement): Reemplaza caracteres o subcadenas.trim(): Elimina espacios en blanco al principio y al final.split(String regex): Divide la cadena en subcadenas según el delimitador.
Ejemplo de creación y algunas operaciones:
// Creación con literal
String str1 = "Java";
// Creación con new
String str2 = new String("Java");
// Concatenación
String str3 = str1 + " is amazing";
// Comparación de contenido (usando equals, no ==)
boolean areEqualContent = str1.equals(str2); // true
// Comparación de referencias (usando ==)
boolean areEqualReference = (str1 == str2); // false
// Longitud de la cadena
int length = str3.length();
// Obtener carácter
char firstChar = str1.charAt(0); // 'J'
// Verificación de inclusión
boolean containsIs = str3.contains("is"); // true
La inmutabilidad de String puede llevar a ineficiencias en modificaciones repetidas de cadenas, ya que cada vez se crea un nuevo objeto. Para estos escenarios, es preferible usar StringBuilder o StringBuffer.