La clase String de java

• El tratamiento de cadenas de caracteres es un problema básico en  informática.

• Java proporciona la clase predefinida String, cuyos objetos agrupan todos los caracteres de una cadena de caracteres.

• En la clase se proporcionan métodos que facilitan el tratamiento de cadenas.

• Internamente, los caracteres de la cadena están en una serie de char, numerados de 0 en adelante, junto con otros datos, como su longitud:

'S' 'a' 'l' 'u' 'd' 'o' 's' '.'

 0  1  2   3  4  5  6  7      Longitud  8 

• De acuerdo con esta numeración, encontramos métodos para:

- averiguar el carácter que ocupa una posición en la cadena,

- encontrar la posición en la que aparece un carácter, o una subcadena

- calcular la subcadena que se extiende entre dos posiciones...

• Métodos mas usuales:

Método compareTo(). La documentación detallada indica que:

- s1.compareTo(s2) es <0 si s1 es menor lexicográficamente que s2,

- s1.compareTo(s2) es 0 si s1 es menor lexicográficamente que s2,

- s1.compareTo(s2) es >0 si s1 es mayor lexicográficamente que s2.

Ejemplo: si s1 es "Memento" y s2 es "Momento", s1.compareTo(s2) da -1


•  s.charAt(i) produce error de ejecución (IndexOutBoundsException) si i no está en el rango de índices de caracteres de s.

•  s.indexOf(c) da -1 si c no aparece en s.

Ejemplo: Si s es "Memento" ,

s.chartAt(2) es 'm',

s.charAt(20) da error de ejecución

s.indexOf('e') da 1,

s.indexOf('E') da -1

toUppercase(), toLowerCase(), calculan un nuevo String con los caracteres del String de partida pasados a mayúsculas y a minúsculas respectivamente.

- trim(), calcula un nuevo String copiando los caracteres del String de partida salvo los blancos de los extremos.

• Ejemplo:  String s = " Golfus de Roma ";

System.out.println( s.trim().toUpperCase() );

"Golfus de Roma" > En la pantalla aparece escrito: GOLFUS DE ROMA

• Aunque en la clase String existe el método de objeto concat que sirve para unir o concatenar dos cadenas, la clase posee además el operador de  concatenación + es equivalente a:

        String s1 = "Hola a ", s2 = "todos.";

        System.out.println(s1.concat(s2));

 • Java deduce por el contexto que se trata del operador de concatenación.

            String s1 = "Hola a ", s2 = "todos.";

                   System.out.println(s1 + s2);

    Java deduce por el contexto que se trata del operador de concatenación! 

- Hay un grupo de métodos de String que no se aplican a objetos de la clase.

• La manera de usarlos es anteponiendo el prefijo String., como por ejemplo String.valueOf(23.2/2.0), que obtiene el String "11.6".

• En general, los métodos que no se aplican a objetos se denominan métodos estáticos, y vienen indicado en la interfaz con el modificador static.

• A los métodos no static se les llama métodos de objeto, dado que deben aplicarse sobre un objeto previamente creado. 

•  No existe ningún tipo de compatibilidad entre String y los tipos primitivos, pero el lenguaje proporciona la siguiente facilidad: si el compilador de Java encuentra la concatenación de un String con

un número, automáticamente usa el método String.valueOf para convertir el número en el String correspondiente.

• Ejemplo:

 int nAlumC = 50, nAlumD = 44;

String s1 = "Hola a los " + (nAlumC + nAlumD);

// s1 es la cadena "Hola a los 94"

Es sintácticamente correcto abreviarlo como:

int nAlumC = 50, nAlumD = 44;

String s1 = "Hola a los " + String.valueOf(nAlumC + nAlumD);

// s1 es la cadena "Hola a los 94"

Los atributos de un objeto String son innacesibles con la notación de punto, y no hay ningún método que permita cambiar sus caracteres. Se dice que los objetos String son inmutables.

 java.lang

Interface de la Clase String. (Se recomienda ver la original)

  • Todas las interfaces implementadas:
    Serializable , CharSequence , Comparable < String >


    público final clase String 
    extiende Objeto 
    implementa Serializable , Comparable < String >, CharSequence
    La String clase representa cadenas de caracteres. Todos los literales de cadena en programas Java, como "abc", se implementan como instancias de esta clase.

    Las cadenas son constantes; sus valores no se pueden cambiar una vez creados. Los búferes de cadena admiten cadenas mutables. Debido a que los objetos String son inmutables, se pueden compartir. Por ejemplo:

         String str = "abc";
     

    es equivalente a:

         char data [] = {'a', 'b', 'c'};
         String str = new String(datos);
     

    Aquí hay algunos ejemplos más de cómo se pueden usar las cadenas:

         System.out.println ("abc");
         String cde = "cde";
         System.out.println ("abc" + cde);
         String c = "abc" .substring (2,3);
         Stringd = cde.substring (1, 2);
     

    La clase String incluye métodos para examinar caracteres individuales de la secuencia, comparar cadenas, buscar cadenas, extraer subcadenas y crear una copia de una cadena con todos los caracteres traducidos a mayúsculas o minúsculas. El mapeo de casos se basa en la versión estándar Unicode especificada por la Character clase.

    El lenguaje Java proporciona soporte especial para el operador de concatenación de cadenas (+) y para la conversión de otros objetos a cadenas. La concatenación de cadenas se implementa a través de la clase StringBuilder(o StringBuffer) y su append método. Las conversiones de cadenas se implementan a través del método toString, definido Object y heredado por todas las clases en Java. Para obtener información adicional sobre la concatenación y conversión de cadenas, consulte Gosling, Joy y Steele, The Java Language Specification .

    A menos que se indique lo contrario, pasar un argumento nulo a un constructor o método en esta clase hará NullPointerException que se lance un.

    String representa una cadena en formato UTF-16 en la que los caracteres suplementarios están representados por pares sustitutos (consulte la sección Representaciones de caracteres Unicode en la Characterclase para obtener más información). Los valores de índice se refieren a char unidades de código, por lo que un carácter suplementario utiliza dos posiciones en a String.

    La String clase proporciona métodos para tratar con puntos de código Unicode (es decir, caracteres), además de aquellos para tratar con unidades de código Unicode (es decir, char valores).

    Desde:
    JDK1.0
    Ver también:
    Object.toString()StringBufferStringBuilderCharsetForma serializada
    • Resumen del constructor

      Constructores 
      Constructor y Descripción
      String()
      Inicializa un Stringobjeto recién creado para que represente una secuencia de caracteres vacía.
      String(byte[] bytes)
      Construye un nuevo Stringdecodificando la matriz de bytes especificada utilizando el juego de caracteres predeterminado de la plataforma.
      String(byte[] bytes, Charset charset)
      Construye un nuevo Stringdecodificando la matriz de bytes especificada usando el juego de caracteres especificado .
      String(byte[] ascii, int hibyte)
      Obsoleto. 
      Este método no convierte correctamente bytes en caracteres. A partir de JDK 1.1, la forma preferida de hacer esto es a través de los Stringconstructores que toman un Charsetnombre de juego de caracteres o que usan el juego de caracteres predeterminado de la plataforma.
      String(byte[] bytes, int offset, int length)
      Construye un nuevo Stringdecodificando el subarreglo de bytes especificado usando el juego de caracteres predeterminado de la plataforma.
      String(byte[] bytes, int offset, int length, Charset charset)
      Construye un nuevo Stringdecodificando la submatriz de bytes especificada usando el juego de caracteres especificado .
      String(byte[] ascii, int hibyte, int offset, int count)
      Obsoleto. 
      Este método no convierte correctamente bytes en caracteres. A partir de JDK 1.1, la forma preferida de hacer esto es a través de los Stringconstructores que toman un Charsetnombre de juego de caracteres o que usan el juego de caracteres predeterminado de la plataforma.
      String(byte[] bytes, int offset, int length, String charsetName)
      Construye un nuevo Stringdecodificando la submatriz de bytes especificada usando el juego de caracteres especificado.
      String(byte[] bytes, String charsetName)
      Construye un nuevo Stringdecodificando la matriz de bytes especificada usando el juego de caracteres especificado .
      String(char[] value)
      Asigna un nuevo Stringpara que represente la secuencia de caracteres contenida actualmente en el argumento de matriz de caracteres.
      String(char[] value, int offset, int count)
      Asigna un nuevo Stringque contiene caracteres de una submatriz del argumento de matriz de caracteres.
      String(int[] codePoints, int offset, int count)
      Asigna un nuevo Stringque contiene caracteres de una submatriz del argumento de matriz de puntos de código Unicode .
      String(String original)
      Inicializa un Stringobjeto recién creado para que represente la misma secuencia de caracteres que el argumento; en otras palabras, la cadena recién creada es una copia de la cadena de argumentos.
      String(StringBuffer buffer)
      Asigna una nueva cadena que contiene la secuencia de caracteres contenida actualmente en el argumento de búfer de cadena.
      String(StringBuilder builder)
      Asigna una nueva cadena que contiene la secuencia de caracteres contenida actualmente en el argumento del generador de cadenas.
    • Resumen del método

      Métodos 
      Modificador y tipoMétodo y descripción
      charcharAt(int index)
      Devuelve el charvalor en el índice especificado.
      intcodePointAt(int index)
      Devuelve el carácter (punto de código Unicode) en el índice especificado.
      intcodePointBefore(int index)
      Devuelve el carácter (punto de código Unicode) antes del índice especificado.
      intcodePointCount(int beginIndex, int endIndex)
      Devuelve el número de puntos de código Unicode en el rango de texto especificado de este String.
      intcompareTo(String anotherString)
      Compara dos cadenas lexicográficamente.
      intcompareToIgnoreCase(String str)
      Compara dos cadenas lexicográficamente, ignorando las diferencias entre mayúsculas y minúsculas.
      Stringconcat(String str)
      Concatena la cadena especificada al final de esta cadena.
      booleancontains(CharSequence s)
      Devuelve verdadero si y solo si esta cadena contiene la secuencia especificada de valores de caracteres.
      booleancontentEquals(CharSequence cs)
      Compara esta cadena con la especificada CharSequence.
      booleancontentEquals(StringBuffer sb)
      Compara esta cadena con la especificada StringBuffer.
      static StringcopyValueOf(char[] data)
      Devuelve una cadena que representa la secuencia de caracteres en la matriz especificada.
      static StringcopyValueOf(char[] data, int offset, int count)
      Devuelve una cadena que representa la secuencia de caracteres en la matriz especificada.
      booleanendsWith(String suffix)
      Prueba si esta cadena termina con el sufijo especificado.
      booleanequals(Object anObject)
      Compara esta cadena con el objeto especificado.
      booleanequalsIgnoreCase(String anotherString)
      Compara esto Stringcon otro String, ignorando las consideraciones del caso.
      static Stringformat(Locale l, String format, Object... args)
      Devuelve una cadena formateada utilizando la configuración regional, la cadena de formato y los argumentos especificados.
      static Stringformat(String format, Object... args)
      Devuelve una cadena formateada utilizando la cadena de formato y los argumentos especificados.
      byte[]getBytes()
      Codifica esto Stringen una secuencia de bytes usando el juego de caracteres predeterminado de la plataforma, almacenando el resultado en una nueva matriz de bytes.
      byte[]getBytes(Charset charset)
      Codifica esto Stringen una secuencia de bytes usando el juego de caracteres dado , almacenando el resultado en una nueva matriz de bytes.
      voidgetBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
      Obsoleto. 
      Este método no convierte correctamente los caracteres en bytes. A partir de JDK 1.1, la forma preferida de hacerlo es mediante el getBytes()método, que utiliza el juego de caracteres predeterminado de la plataforma.
      byte[]getBytes(String charsetName)
      Codifica esto Stringen una secuencia de bytes usando el conjunto de caracteres nombrado, almacenando el resultado en una nueva matriz de bytes.
      voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
      Copia caracteres de esta cadena en la matriz de caracteres de destino.
      inthashCode()
      Devuelve un código hash para esta cadena.
      intindexOf(int ch)
      Devuelve el índice dentro de esta cadena de la primera aparición del carácter especificado.
      intindexOf(int ch, int fromIndex)
      Devuelve el índice dentro de esta cadena de la primera aparición del carácter especificado, comenzando la búsqueda en el índice especificado.
      intindexOf(String str)
      Devuelve el índice dentro de esta cadena de la primera aparición de la subcadena especificada.
      intindexOf(String str, int fromIndex)
      Devuelve el índice dentro de esta cadena de la primera aparición de la subcadena especificada, comenzando en el índice especificado.
      Stringintern()
      Devuelve una representación canónica del objeto de cadena.
      booleanisEmpty()
      Devuelve verdadero si, y solo si, length()es 0 .
      intlastIndexOf(int ch)
      Devuelve el índice dentro de esta cadena de la última aparición del carácter especificado.
      intlastIndexOf(int ch, int fromIndex)
      Devuelve el índice dentro de esta cadena de la última aparición del carácter especificado, buscando hacia atrás comenzando en el índice especificado.
      intlastIndexOf(String str)
      Devuelve el índice dentro de esta cadena de la última aparición de la subcadena especificada.
      intlastIndexOf(String str, int fromIndex)
      Devuelve el índice dentro de esta cadena de la última aparición de la subcadena especificada, buscando hacia atrás comenzando en el índice especificado.
      intlength()
      Devuelve la longitud de esta cadena.
      booleanmatches(String regex)
      Indica si esta cadena coincide o no con la expresión regular dada .
      intoffsetByCodePoints(int index, int codePointOffset)
      Devuelve el índice dentro de este Stringque se desplaza del dado indexpor los codePointOffsetpuntos de código.
      booleanregionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
      Comprueba si dos regiones de cuerdas son iguales.
      booleanregionMatches(int toffset, String other, int ooffset, int len)
      Comprueba si dos regiones de cuerdas son iguales.
      Stringreplace(char oldChar, char newChar)
      Devuelve una nueva cadena resultante de reemplazar todas las apariciones de oldCharen esta cadena con newChar.
      Stringreplace(CharSequence target, CharSequence replacement)
      Reemplaza cada subcadena de esta cadena que coincide con la secuencia de destino literal con la secuencia de reemplazo literal especificada.
      StringreplaceAll(String regex, String replacement)
      Reemplaza cada subcadena de esta cadena que coincide con la expresión regular dada con el reemplazo dado.
      StringreplaceFirst(String regex, String replacement)
      Reemplaza la primera subcadena de esta cadena que coincide con la expresión regular dada con el reemplazo dado.
      String[]split(String regex)
      Divide esta cadena alrededor de las coincidencias de la expresión regular dada .
      String[]split(String regex, int limit)
      Divide esta cadena alrededor de las coincidencias de la expresión regular dada .
      booleanstartsWith(String prefix)
      Comprueba si esta cadena comienza con el prefijo especificado.
      booleanstartsWith(String prefix, int toffset)
      Comprueba si la subcadena de esta cadena que comienza en el índice especificado comienza con el prefijo especificado.
      CharSequencesubSequence(int beginIndex, int endIndex)
      Devuelve una nueva secuencia de caracteres que es una subsecuencia de esta secuencia.
      Stringsubstring(int beginIndex)
      Devuelve una nueva cadena que es una subcadena de esta cadena.
      Stringsubstring(int beginIndex, int endIndex)
      Devuelve una nueva cadena que es una subcadena de esta cadena.
      char[]toCharArray()
      Convierte esta cadena en una nueva matriz de caracteres.
      StringtoLowerCase()
      Convierte todos los caracteres en este Stringa minúsculas utilizando las reglas de la configuración regional predeterminada.
      StringtoLowerCase(Locale locale)
      Convierte todos los caracteres en este Stringa minúsculas usando las reglas del dado Locale.
      StringtoString()
      Este objeto (que ya es una cadena) se devuelve.
      StringtoUpperCase()
      Convierte todos los caracteres en este Stringa mayúsculas utilizando las reglas de la configuración regional predeterminada.
      StringtoUpperCase(Locale locale)
      Convierte todos los caracteres en este Stringa mayúsculas usando las reglas del dado Locale.
      Stringtrim()
      Devuelve una copia de la cadena, omitiendo los espacios en blanco iniciales y finales.
      static StringvalueOf(boolean b)
      Devuelve la representación de cadena del booleanargumento.
      static StringvalueOf(char c)
      Devuelve la representación de cadena del char argumento.
      static StringvalueOf(char[] data)
      Devuelve la representación de cadena del charargumento de matriz.
      static StringvalueOf(char[] data, int offset, int count)
      Devuelve la representación de cadena de una submatriz específica del charargumento de la matriz.
      static StringvalueOf(double d)
      Devuelve la representación de cadena del doubleargumento.
      static StringvalueOf(float f)
      Devuelve la representación de cadena del floatargumento.
      static StringvalueOf(int i)
      Devuelve la representación de cadena del intargumento.
      static StringvalueOf(long l)
      Devuelve la representación de cadena del longargumento.
      static StringvalueOf(Object obj)
      Devuelve la representación de cadena del Objectargumento.
    • Detalle de campo

      • CASE_INSENSITIVE_ORDER

        Comparador final estático público  < String > CASE_INSENSITIVE_ORDER
        Un comparador que ordena los Stringobjetos por compareToIgnoreCaseEste comparador es serializable.

        Tenga en cuenta que este Comparador no tiene en cuenta la configuración regional y dará como resultado un pedido insatisfactorio para ciertas configuraciones regionales. El paquete java.text proporciona clasificadores para permitir el ordenamiento sensible a la configuración regional.

        Desde:
        1.2
        Ver también:
        Collator.compare(String, String)

Comentarios

Entradas populares de este blog

Definición de la estructura o atributos que tendrán los objetos de una clase.

Métodos: Declaración.