Vector de caracteres en Java
Un vector de caracteres
es un vector que contiene datos de tipo char.
Los vectores de caracteres en Java se crean de forma similar a un vector unidimensional de cualquier otro tipo de datos.
A diferencia de los demás vectores, se puede mostrar el contenido completo de un vector de caracteres mediante una sola instrucción print o println.
Ejemplo: Vector de 8 caracteres
llamado cadena.
Por defecto los elementos
del vector inician con el carácter nulo (carácter \u0000 Unicode).
char [] cadena = new
char[8];
De forma gráfica el vector de caracteres cadena se puede representar así:
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
cadena[0]
|
cadena [1]
|
cadena [2]
|
cadena [3]
|
cadena [4]
|
cadena [5]
|
cadena [6]
|
cadena [7]
|
Para
mostrar el contenido completo del vector:
System.out.println(cadena); //Mostrará 8
caracteres nulos (en blanco)
Ejemplo: Vector de 5 caracteres llamado vocales.
Se asignan valores
iniciales: a, e, i, o, u
char [] vocales = {'a',
'e', 'i', 'o', 'u'};
a
|
e
|
i
|
o
|
u
|
vocales[0]
|
vocales [1]
|
vocales [2]
|
vocales [3]
|
vocales [4]
|
System.out.println(vocales); //Mostrará aeiou
El
atributo length de un vector de caracteres contiene el tamaño del vector
independientemente de que sean caracteres nulos u otros caracteres.
Por
ejemplo:
char [] cadena = new
char[8];
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
cadena[0]
|
cadena
[1]
|
cadena
[2]
|
cadena
[3]
|
cadena
[4]
|
cadena
[5]
|
cadena
[6]
|
cadena [7]
|
System.out.println(cadena.length); //Muestra 8
cadena[0] ='m';
cadena[1] ='n';
m
|
n
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
\u0000
|
cadena[0]
|
cadena
[1]
|
cadena
[2]
|
cadena
[3]
|
cadena
[4]
|
cadena
[5]
|
cadena
[6]
|
cadena
[7]
|
System.out.println(cadena.length);
//Muestra:
8
System.out.print(cadena);
System.out.print(cadena);
System.out.println(".");
//Mostrará:
mnbbbbbbmnbbbbbb.
Los
espacios en blanco se han representado por el carácter b
Se
puede asignar un String a un vector de caracteres mediante el método toCharArray() de la clase String.
Ejemplo:
String s = "Ordenador";
char [] palabra = s.toCharArray();
Se
crea un nuevo vector de caracteres con el contenido del String s y se asigna la
dirección de memoria apalabra.
Se
puede crear un String a partir de un vector de caracteres.
Ejemplo:
char [] vocales = {'a',
'e', 'i', 'o', 'u'};
String s = new
String(vocales);
Se
crea un nuevo String con el contenido del vector vocales y se asigna la dirección de memoria a s.
RECORRER UN VECTOR DE CARACTERES UNIDIMENSIONAL
Se puede recorrer de
forma completa utilizando una instrucción iterativa, normalmente un for.
Por ejemplo:
char [] s = new char[10];
s[0]='a';
s[1]='b';
s[2]='c';
for(int i = 0; i<s.length; i++)
System.out.print(s[i]+
" ");
//Mostrará todos los caracteres del array,
incluidos los nulos.
Si
los caracteres no nulos se encuentran al principio del array se puede recorrer
utilizando un while, mientras que no encontremos un carácter nulo.
char [] s = new char[10];
s[0]='a';
s[1]='b';
s[2]='c';
int i = 0;
while(s[i]!='\0'){
System.out.print(s[i]);
i++;
}
//Muestra los caracteres del array hasta que
encuentra el primer nulo.
Muchos Strings se crean a partir de cadenas literales. Cuando el compilador encuentra una serie de caracteres entre comillas (" y "), crea un objeto String cuyo valor es el propio texto. El esquema general es el siguiente: String nombre="cadena"; Cuando el compilador encuentra la siguente cadena, crea un objeto String cuyo valor es Hola Mundo.
Concatenación
de cadenas
Longitud de
cadenas
Extracción de
caracteres
Comparación de
cadenas
Búsqueda en la
cadena
Conversión de
minúsculas a mayúsculas de una cadena
FUNCIONES BÁSICAS DE CADENA
DE CARACTERES EN JAVA
DE CARACTERES EN JAVA
CREACION
DE CADENAS
Muchos Strings se crean a partir de cadenas literales. Cuando el compilador encuentra una serie de caracteres entre comillas (" y "), crea un objeto String cuyo valor es el propio texto. El esquema general es el siguiente: String nombre="cadena"; Cuando el compilador encuentra la siguente cadena, crea un objeto String cuyo valor es Hola Mundo.
"Hola Mundo"
o también
String s = "Hola Mundo"
También
se pueden crear objetos String como se haría con cualquier otro objeto Java:
utilizando new.
String s = new String("Hola
Mundo.");
El
constructor anterior es equivalente pero es mucho más eficiente el primer
método ya que, el segundo método crea dos objetos String en vez de sólo uno.
Se pueden
utilizar cadenas literales en cualquier lugar donde se pueda utilizar un objeto
String. Por ejemplo, System.out.println() acepta un argumenteo String, por eso
se puede utilizar una cadena literal en su lugar:
System.out.println("Hola
Mundo!");
USO
DE CADENAS
Concatenación
de cadenas
Java permite concatenar cadenas fácilmente
utilizando el operador +. El siguiente fragmento de código concatena tres
cadenas para producir su salida:
"La entrada tiene
" + contador + " caracteres."
Dos de las cadenas concatenadas son cadenas
literales: "La entrada tiene " y " caracteres.". La tercera
cadena - la del medio- es realmente un entero que primero se convierte a cadena
y luego se concatena con las otras.
Longitud de
cadenas
uno de los métodos mas habituales que se
utilizan en un String es length, que devuelve el n§. de caracteres de una
cadena:
String
s = "abc";
System.out.println(s.length());
System.out.println(s.length());
El resultado de ejecutar el código anterior,
sería la impresión de 3, que se corresponde con la longitud llamada s.
Un punto interesante en Java es que se crea
una instancia de objeto para cada literal String, por lo que se puede llamar a
los métodos directamente con una cadena entre comillas, como si fuera una
referencia a objeto, con este ejemplo se volvería a imprimir un 3:
String
s = "abc";
System.out.println("abc".lenght());
System.out.println("abc".lenght());
Extracción de
caracteres
Para extraer un único carácter de una
cadena, se puede referir a un carácter indexado mediante el método charAt, la
sintaxis es la siguiente Objeto_cadena.charAt(índice);
"abc".charAt(1)
Devolverá 'b'
Si se necesita extraer más de un carácter a
la vez, puede utilizar el método getChars,
que le permite especificar el índice del primer carácter y del último más uno
que se desean copiar, además de la matriz char donde se desean colocar dichos
caracteres.
String
s = "Esto no es una canción";
char buf[] = new char[2];
s.getChars(5, 7, buf, 0);
char buf[] = new char[2];
s.getChars(5, 7, buf, 0);
buf ahora tendrá el valor 'no'
También existe una función útil llamada toCharArray, que devuelve una matriz de char que contiene la cadena completa.
También existe una función útil llamada toCharArray, que devuelve una matriz de char que contiene la cadena completa.
Comparación de
cadenas
Si se desean comparar dos cadenas para ver
si son iguales, puede utilizar el método equals de String. Devolverá true si el único
parámetro está compuesto de los mismos caracteres que el objeto con el que se
llama a equals. Una forma alternativa de equals llamada equalsIgnoreCase ignora si los caracteres de las
cadenas que se comparan están en mayúsculas o minúsculas.
Objeto_cadena1.equals(Objeto_cadena2);
Objeto_cadena1.equalsIgnoreCase(Objeto_cadena2);
Objeto_cadena1.equalsIgnoreCase(Objeto_cadena2);
Veamos ahora un ejemplo:
String
cadena1="pepe";
String cadena2="juan";
if (cadena1.equals(cadena2))
{
//Ambas cadenas son iguales (no es el caso)
}
{
//Ambas cadenas son iguales (es el caso)
}
String cadena2="juan";
if (cadena1.equals(cadena2))
{
//Ambas cadenas son iguales (no es el caso)
}
{
//Ambas cadenas son iguales (es el caso)
}
Igualdad
El método equals y el operador = = hacen dos
pruebas completamente diferentes para la igualdad. Mientras que el método
equals compara los caracteres contenidos en una String, el operador = = compara
dos referencias de objeto para ver si se refieren a la misma instancia. Por
tanto, no podemos usar el signo == porque esta sería una comparación binaria de
punteros a memoria y no nos devolvería el valor correcto
Comparación con CompareTo
Si lo que queremos es comparar cadenas para
ordenarlas, una opción es usar el método compareTo() de la clase String. Este
método devuelve 0 si ambas cadenas tienen el mismo contenido, negativo si el
String es menor -va antes- que el parámetro que se le pasa y positivo si es
mayor. Es decir:
if
(cadena1.compareTo(cadena2) == 0)
System.out.println("cadena1 y cadena2 son iguales");
else
if (cadena1.compareTo(cadena2) < 0)
System.out.println ("cadena1 va antes que cadena2");
else
if (cadena1.compareTo(cadena2) > 0)
System.out.println("cadena2 va después que cadena1");
System.out.println("cadena1 y cadena2 son iguales");
else
if (cadena1.compareTo(cadena2) < 0)
System.out.println ("cadena1 va antes que cadena2");
else
if (cadena1.compareTo(cadena2) > 0)
System.out.println("cadena2 va después que cadena1");
Búsqueda en la
cadena
Presenta los siguientes métodos para buscar
caracteres o subcadenas en la cadena, y devuelven el índice que han encontrado
o el valor –1 si la búsqueda no ha sido satisfactoria:
int indexOf( char ch, int start ): Devuelve el índice
correspondiente a la primera aparición del carácter ch en la cadena, comenzando
a buscar desde el carácter start (si no se especifica se busca desde el
principio).
int indexOf( String str ): Devuelve el índice
correspondiente al carácter en que empieza la primera aparición de la subcadena
str.
int lastIndexOf( char ch, int start ): Devuelve el índice
correspondiente a la última aparición del carácter ch en la cadena, comenzando
a buscar desde el carácter start (si no se especifica se busca desde el final).
int lastIndexOf( String str ): Devuelve el índice
correspondiente al carácter en que empieza la última aparición de la subcadena
str.
Objeto_cadena.indexOf(‘carácter’);
Objeto_cadena.indexOf(“cadena”);
Objeto_cadena.lastIndexOf(‘carácter’);
Objeto_cadena.lastIndexOf(“cadena”);
Objeto_cadena.indexOf(“cadena”);
Objeto_cadena.lastIndexOf(‘carácter’);
Objeto_cadena.lastIndexOf(“cadena”);
Conversión de
minúsculas a mayúsculas de una cadena
Objeto_cadena.toLowerCase();
// Lo convierte a minúsculas.
Objeto_cadena.toUpperCase(); // Lo convierte a mayúsculas.
Objeto_cadena.toUpperCase(); // Lo convierte a mayúsculas.
No hay comentarios:
Publicar un comentario