¿Qué es una cadena en Java?
En programación, las cadenas se utilizan con mucha frecuencia. Una cadena en Java es un objeto que representa una secuencia de caracteres respaldada por una matriz de caracteres. La clase String es inmutable en Java e implementa interfaces Comparable , Serializable y CharSequence . Veamos un ejemplo para entenderlo.String str = "string"
Aquí str es la secuencia de 6 caracteres que son s, t, r, i, n y g.
Índice de matriz de caracteres | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
Valor | s | t | r | i | norte | gramo |
Dirección de memoria | 0x12824 | 0x12825 | 0x12826 | 0x12827 | 0x12828 | 0x12829 |
Formas de inicialización de cadenas
Hay dos formas de inicializar una cadena.- Literales de cadena
- Nuevo operador
Literal de cadena
En el ejemplo anterior se utiliza la forma más sencilla y directa de declarar una cadena. Siempre que el compilador interpreta un literal de cadena, siempre se convierte en el objeto String.String str = "string";
Nuevo operador
También podemos inicializar una cadena usando el nuevo operador.String strNew = new String("using new operator");
Ejemplo
import java.io.*;
import java.lang.*;
class StringInitializationExample {
public static void main(String[] args)
{
//declare java string with a string literal
String str = "a string literal";
System.out.println("String str = " + str);
//declare string using new operator
String strNew = new String("using new operator");
System.out.println("String strNew = " + strNew);
}
}
Producción
String str = un literal de cadena String strNew = usando el nuevo operador
Cadena frente a StringBuilder frente a StringBuffer
Ya hemos discutido qué es la clase String, así que discutiremos las otras dos clases y su propósito, junto con la razón por la que Java introdujo estas dos clases cuando ya tenía la clase String para nosotros. Es mejor que vayas arriba y revises la clase String para entenderla mejor.Razón
Como sabemos, el objeto de clase String es inmutable, cada vez que necesitamos cambiar la cadena, nunca muta el objeto actual, pero el valor modificado siempre se almacena como un nuevo objeto String. Entonces, si necesitamos cambiar el valor, una y otra vez, también se consumirá memoria. Manteniendo este punto, Java nos ha proporcionado las clases StringBuilder y StringBuffer . Ahora veremos cómo son útiles en este escenario.búfer de cadena
String es una representación de una secuencia inmutable de caracteres, pero StringBuffer es una secuencia mutable de caracteres . Utiliza la mayoría de los métodos de la clase String junto con algunos propios para cambiar el contenido y la secuencia de caracteres. Es seguro para subprocesos porque sus métodos están sincronizados para su uso por múltiples subprocesos, manteniendo el orden en serie. Implementa las interfaces Serializable , Appendable y CharSequence .Sintaxis
StringBuffer str = new StringBuffer("Happy Java Programming");
Constructor de cadenas
StringBuilder también representa la secuencia mutable de caracteres. Proporciona una API que es compatible con la clase StringBuffer pero no es segura para subprocesos. Entonces, cuando no hay múltiples subprocesos involucrados, es mejor utilizar la clase StringBuilder ya que es más rápida que la clase StringBuffer en muchos casos. Los métodos clave de esta clase son insertar y agregar. También implementa las interfaces Serializable , Appendable y CharSequence .Sintaxis
StringBuilder str = new StringBuilder("Happy Java Programming");
Operaciones de cadena
En Java podemos realizar operaciones de cadenas como concatenación , comparación , división , búsqueda de longitud , reemplazo de cadenas , etc.Métodos de cadena
La clase Java String proporciona varios métodos para manipular las cadenas o realizar las operaciones comentadas anteriormente. Echemos un vistazo a la siguiente tabla para ver algunos de estos métodos de cadena.Métodos | Descripción |
---|---|
Char charAt(índice int) | Devuelve el valor del carácter en el índice proporcionado. |
Concat de cadena (cadena de cadena) | Devuelve una cadena combinando una cadena especificada al final de esta cadena. |
booleano contiene (CharSequence s) | Devuelve verdadero si la cadena contiene una secuencia específica de valores de caracteres. |
contenido booleanoEquals (CharSequence cs) | Coincide con la cadena con la secuencia de caracteres proporcionada. |
contenido booleanoEquals(StringBuffer sb) | Hace coincidir la cadena con el búfer de cadena proporcionado. |
booleano termina con (sufijo de cadena) | Compara el final de la cadena con el sufijo proporcionado. |
booleano es igual a (Objeto y Objeto) | Hace coincidir la cadena con el objeto proporcionado. |
booleano es igual a IgnoreCase (cadena otra cadena) | Este método compara dos cadenas sin tener en cuenta la distinción entre mayúsculas y minúsculas. |
formato de cadena estática (formato de cadena, objeto… argumentos) | Devuelve la cadena formateada utilizando el formato proporcionado y los argumentos. |
byte obtenerBytes() | Este método utiliza el juego de caracteres predeterminado de la plataforma para codificar la cadena en una secuencia de bytes, que luego se almacena en una nueva matriz de bytes. |
void getChars(int comienzo, int fin, char[] dst, int dstBegin) | Copia los caracteres de la cadena en la matriz de caracteres de destino. |
int código hash() | Devuelve el código hash de la cadena. |
int índice de (int ch) | Devuelve el índice del carácter especificado que aparece primero en la cadena. |
int indexOf(int ch, int fromIndex) | Devuelve el índice del carácter especificado que aparece primero a partir del índice proporcionado en esta cadena. |
int índice de (cadena cadena) | Busca la subcadena proporcionada en la cadena y devuelve el índice en la primera aparición. |
int indexOf(cadena cadena, int fromIndex) | Comienza a buscar la subcadena proporcionada en la cadena del índice dado y devuelve el índice en la primera aparición. |
Pasante de cadena() | Este método devuelve la representación canónica de la cadena. |
int último índice de (int ch) | Este método busca el carácter proporcionado en la cadena y devuelve el índice de la última aparición. |
int último índice de (int ch, int desde índice) | Este método busca hacia atrás desde el índice dado el carácter proporcionado en la cadena y devuelve el índice de la última aparición. |
int último índice de (cadena cadena) | Este método busca la subcadena proporcionada en la cadena y devuelve el índice de la última aparición. |
int lastIndexOf (cadena cadena, int fromIndex) | Este método busca hacia atrás desde el índice dado la subcadena proporcionada en la cadena y devuelve el índice de la última aparición. |
longitud entera() | Este método devuelve la longitud de la cadena. |
coincidencias booleanas (cadena de expresiones regulares) | Devuelve verdadero o falso al hacer coincidir la cadena con la expresión regular proporcionada. |
Reemplazo de cadena (char oldValue, char newValue) | Este método devuelve una cadena después de reemplazar todos los valores antiguos proporcionados con el valor nuevo en la cadena. |
Cadena [] dividida (cadena expresión regular) | Este método encuentra todas las coincidencias de acuerdo con la expresión regular proporcionada en la cadena y la divide entre estas coincidencias. |
booleano comienza con (prefijo de cadena) | Devuelve verdadero o falso al probar que la cadena comienza con el prefijo proporcionado. |
Subcadena de cadena (int comenzarIndex) | Este método devuelve una cadena que es la subcadena de esta cadena. |
Cadena en minúsculas() | Convierte todos los caracteres de la cadena a minúsculas utilizando las reglas de la configuración regional predeterminada. |
Recorte de cuerda() | Este método elimina todos los espacios en blanco iniciales y finales de la cadena y la devuelve. |
valor de cadena estática de (char c) | Devuelve la representación en cadena del argumento char. |
Ejemplo
import java.io.*;
import java.lang.*;
class JavaStringsExample {
public static void main(String[] args) {
//create a string
String greeting = "Hello! World";
System.out.println("String: " + greeting);
//getting the length of greeting object
int length = greeting.length();
System.out.println("Length: " + length);
//create first string
String first = "Java ";
System.out.println("First String: " + first);
//create second string
String second = "Programming";
System.out.println("Second String: " + second);
//joining two strings
String joinedString = first.concat(second);
System.out.println("Joined String: " + joinedString);
String jpf = "Java programming";
String jps = "Java programming";
String jpt = "Python programming";
//compare jpf and jps strings
boolean result1 = jpf.equals(jps);
System.out.println("Strings jpf and jps are equal: " + result1);
//compare jpf and jpt strings
boolean result2 = jpf.equals(jpt);
System.out.println("Strings jpf and jpt are equal: " + result2);
//converting jpf to uppercase
System.out.println("Upper case jpf: " + jpf.toUpperCase());
//replacing g character with v in jpf
System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
}
}
Producción
Cadena: ¡Hola! Longitud del mundo: 12 Primera cadena: Java Segunda cadena: Programación Cadena unida: Programación Java Las cadenas jpf y jps son iguales: verdadera Las cadenas jpf y jpt son iguales: falso Jpf mayúscula: PROGRAMACIÓN JAVA Reemplazar g con v en jpf: java provramminv
GO TO FULL VERSION