La clase String en Java está diseñada para funcionar con cadenas en Java. Todos los literales de cadena definidos en un programa Java (por ejemplo, "abc") son instancias de la clase String. Veamos sus características clave:
- La clase implementa las interfaces
Serializable
yCharSequence
. Dado que está incluido en el paquetejava.lang
, no es necesario importarlo. - La clase String en Java es una clase final y no puede tener hijos.
- La clase String es una clase inmutable, lo que significa que sus objetos no se pueden cambiar una vez creados. Cualquier operación en un objeto String que resulte en un objeto de la clase String dará como resultado la creación de un nuevo objeto.
- Debido a su inmutabilidad, los objetos de clase String son seguros para subprocesos y pueden usarse en un entorno de subprocesos múltiples.
- Cada objeto en Java se puede convertir en una cadena mediante un método
toString
que todas las clases de Java heredan de la claseObject
.
Trabajar con cadenas de Java
Esta es una de las clases más utilizadas en Java. Tiene métodos para analizar ciertos caracteres en una cadena, para comparar y buscar cadenas, extraer subcadenas, crear una copia de una cadena con todos los caracteres convertidos a minúsculas y mayúsculas, y otros. Puede encontrar una lista de todos los métodos de la clase String en la documentación oficial . Java también implementa un mecanismo simple de concatenación (conectando cadenas), convirtiendo primitivas en una cadena y viceversa. Veamos algunos ejemplos de cómo trabajar con la clase String en Java.Creando cadenas
La forma más sencilla de crear una instancia de la clase String es asignarle el valor de un literal de cadena:String s = "I love movies";
Sin embargo, la clase String tiene muchos constructores que le permiten:
- crear un objeto que contenga una cadena vacía
- crear una copia de una variable de cadena
- crear una cadena basada en una matriz de caracteres
- crear una cadena basada en una matriz de bytes (teniendo en cuenta las codificaciones)
- etc.
Adición de cadenas
Agregar dos cadenas en Java es bastante simple usando el archivo+
. Java le permite agregar variables y cadenas literales entre sí:
public static void main(String[] args) {
String day = "Día";
String and = "Y";
String night = "Noche";
String dayAndNight = day + " " + and + " " + night;
}
Al agregar objetos de la clase String con objetos de otras clases, reducimos estos últimos a forma de cadena. La conversión de objetos de otras clases a una representación de cadena se realiza mediante una llamada a un método implícito toString
en el objeto. Demostremos esto con el siguiente ejemplo:
public class StringExamples {
public static void main(String[] args) {
Human max = new Human("máximo");
String out = "objeto java:" + max;
System.out.println(out);
// Salida: Objeto Java: Persona llamada Max
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "El hombre con el nombre" + name;
}
}
}
Comparación de cadenas
Para comparar cadenas, puede utilizar el métodoequals()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("Test String".equals(x)); // true
}
Cuando el caso no es importante para nosotros al comparar cadenas, necesitamos usar el método equalsIgnoreCase()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("test string".equalsIgnoreCase(x)); // true
}
Convertir un objeto/primitiva en una cadena
Para convertir una instancia de cualquier clase Java o cualquier tipo de datos primitivo en una representación de cadena, puede utilizar el métodoString.valueOf()
:
public class StringExamples {
public static void main(String[] args) {
String a = String.valueOf(1);
String b = String.valueOf(12.0D);
String c = String.valueOf(123.4F);
String d = String.valueOf(123456L);
String s = String.valueOf(true);
String human = String.valueOf(new Human("Alex"));
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(s);
System.out.println(human);
/*
Salida:
1
12.0
123.4
123456
verdadero
Persona llamada Alex
*/
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "El hombre con el nombre" + name;
}
}
}
Convertir una cadena en un número
A menudo es necesario convertir una cadena en un número. Las clases contenedoras de tipo primitivo tienen métodos que sirven exactamente para este propósito. Todos estos métodos comienzan con la palabra análisis. Considere la traducción de una cadena a números enteros (Integer
) y fraccionarios ( ) a continuación:Double
public static void main(String[] args) {
Integer i = Integer.parseInt("12");
Double d = Double.parseDouble("12.65D");
System.out.println(i); // 12
System.out.println(d); // 12.65
}
Convertir una colección de cadenas en una representación de cadena
Si necesita convertir todos los elementos de alguna colección de cadenas en una representación de cadena a través de un delimitador arbitrario, puede utilizar los siguientes métodos de la clase Java String:join(CharSequence delimiter, CharSequence... elements)
join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
delimiter
está el separador de elementos y elements
es una instancia de matriz de cadenas/colección de cadenas? Veamos un ejemplo donde convertimos una lista de cadenas en una cadena, separando cada una con un punto y coma:
public static void main(String[] args) {
List<String> people = Arrays.asList(
"Philip J. Fry",
"Turanga Leela",
"Bender Bending Rodriguez",
"Hubert Farnsworth",
"Hermes Conrad",
"John D. Zoidberg",
"Amy Wong"
);
String peopleString = String.join("; ", people);
System.out.println(peopleString);
/*
Salida:
Philip J. Fry; Turanga Leela; Bender Bending Rodríguez; Hubert Farnsworth; Hermes Conrado; John D. Zoidberg; Amy Wong
*/
}
Dividir una cadena en una matriz de cadenas
Esta operación se realiza mediante el métodosplit(String regex)
El separador es una expresión regular de cadena regex
. En el siguiente ejemplo, realizaremos la operación opuesta a la que realizamos en el ejemplo anterior:
public static void main(String[] args) {
String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong";
String[] peopleArray = people.split("; ");
for (String human : peopleArray) {
System.out.println(human);
}
/*
Salida:
Philip J. Fry
Turanga Leela
Bender Bending Rodríguez
Hubert Farnsworth
Hermes Conrad
John D. Zoidberg
Amy Wong
*/
}
Determinar la posición de un elemento en una línea.
En el lenguaje Java, String proporciona un conjunto de métodos para determinar la posición de un carácter/subcadena en una cadena:indexOf(int ch)
indexOf(int ch, int fromIndex)
indexOf(String str)
indexOf(String str, int fromIndex)
lastIndexOf(int ch)
lastIndexOf(int ch, int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str, int fromIndex)
ch
— el símbolo que estás buscando (char
)str
- cadena de búsquedafromIndex
— la posición desde la cual buscar el elemento- métodos
indexOf
: devuelve la posición del primer elemento encontrado - métodos
lastIndexOf
: devuelve la posición del último elemento encontrado
A
, K
, Z
, Я
en el alfabeto inglés, pero tengamos en cuenta que la indexación de caracteres en una cadena en Java comienza desde cero:
public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(alphabet.indexOf('A')); // 0
System.out.println(alphabet.indexOf('K')); // 10
System.out.println(alphabet.indexOf('Z')); // 25
System.out.println(alphabet.indexOf('Я')); // -1
}
Extraer una subcadena de una cadena
Para extraer una subcadena de una cadena, la clase String en Java proporciona métodos:substring(int beginIndex)
substring(int beginIndex, int endIndex)
public static void main(String[] args) {
String filePath = "D:\\Movies\\Futurama.mp4";
int lastFileSeparatorIndex = filePath.lastIndexOf('\\');
String fileName = filePath.substring(lastFileSeparatorIndex + 1);
System.out.println(fileName); //9
}
Convertir cadena a mayúsculas/minúsculas:
La clase String proporciona métodos para convertir una cadena a mayúsculas y minúsculas:toLowerCase()
toUpperCase()
public static void main(String[] args) {
String fry = "Philip J. Fry";
String lowerCaseFry = fry.toLowerCase();
String upperCaseFry = fry.toUpperCase();
System.out.println(lowerCaseFry); // philip j. fry
System.out.println(upperCaseFry); // PHILIP J. FRY
}
Trabajar con esta clase de Java se estudia en los niveles iniciales del curso en línea JavaRush:
- Se proporciona una introducción a String en el nivel 1, lección 4 de la misión de sintaxis de Java.
- La estructura interna de String y el método de subcadena se estudian en el segundo nivel, tercera lección de la misión Java Multithreading.
- Encontrar, obtener y eliminar una subcadena en una cadena se estudia en el segundo nivel, cuarta conferencia de la misión Java Multithreading
- El método String.format se trata en el nivel 2, lección 6 de la misión Java Multithreading.
Fuentes adicionales
También se proporciona información sobre la clase String en otros artículos de la comunidad JavaRush:- Cadenas en Java : este artículo cubre algunos conceptos básicos sobre cómo trabajar con cadenas en Java.
- Cadena de Java. Preguntas y respuestas de la entrevista, parte 1 : este artículo analiza las preguntas de la entrevista sobre el tema
String
y también proporciona respuestas a las preguntas con explicaciones y ejemplos de código. - Cadenas en Java (clase java.lang.String) : este artículo proporciona un análisis más profundo de la clase String y también analiza las complejidades de trabajar con esta clase.
GO TO FULL VERSION