En la línea 15 se utiliza el método
length
de
String
para determinar el número de caracteres en la cadena
s1
. Al igual que los arreglos, las cadenas conocen su propia longitud. Sin embargo, a diferencia de los arreglos,
no podemos acceder a la longitud de una cadena mediante un campo
length
; en vez de ello, debemos llamar al
método
length
del objeto
String
.
En las líneas 20 y 21 se imprimen los caracteres de la cadena
s1
en orden inverso (y separados por espacios).
El método
charAt
de
String
(línea 21) devuelve el carácter ubicado en una posición específi ca en la cadena. El
método
charAt
recibe un argumento entero que se utiliza como el índice, y devuelve el carácter en esa posición.
Al igual que los arreglos, se considera que el primer elemento de una cadena está en la posición 0.
En la línea 24 se utiliza el método
getChars
de
String
para copiar los caracteres de una cadena en un arreglo
de caracteres. El primer argumento es el índice inicial en la cadena, a partir del cual se van a copiar los caracteres.
El segundo argumento es el índice que está una posición más adelante del último carácter que se va a copiar de
la cadena. El tercer argumento es el arreglo de caracteres en el que se van a copiar los caracteres. El último argu-
mento es el índice inicial en donde se van a colocar los caracteres copiados en el arreglo de caracteres de destino.
A continuación, en la línea 28 se imprime el contenido del arreglo
char
, un carácter a la vez.
30.3.3 Comparación entre cadenas
En el capítulo 7 hablamos sobre el ordenamiento y la búsqueda en los arreglos. Con frecuencia, la información
que se va a ordenar o buscar consiste en cadenas que deben compararse para determinar el orden o para deter-
minar si una cadena aparece en un arreglo (u otra colección). La clase
String
proporciona varios métodos para
comparar cadenas, los cuales mostraremos en los siguientes dos ejemplos.
Para comprender lo que signifi ca que una cadena sea mayor o menor que otra, considere el proceso de alfabe-
tizar una serie de apellidos. Sin duda usted colocaría a “Jones” antes que “Smith”, ya que en el alfabeto la primera
letra de “Jones” viene antes que la primera letra de “Smith” en el alfabeto. Pero el alfabeto es algo más que una lista
de 26 letras; es un conjunto ordenado de caracteres. Cada letra ocupa una posición específi ca dentro del conjunto.
Z es más que una letra del alfabeto; es en específi co la letra número veintiséis del alfabeto.
¿Cómo sabe la computadora que una letra va antes que otra? Todos los caracteres se representan en la compu-
tadora como códigos numéricos (vea el apéndice B). Cuando la computadora compara cadenas, en realidad com-
para los códigos numéricos de los caracteres en las cadenas.
En la fi gura 30.3 se muestran los métodos
equals
,
equalsIgnoreCase
,
compareTo
y
regionMatches
de
String
, y se muestra el uso del operador de igualdad
==
para comparar objetos
String
.
Figura 30.2
| Métodos de manipulación de caracteres de la clase
String
. (Parte 2 de 2).
16
17
// itera a través de los caracteres en s1 con charAt y muestra la cadena invertida
18
System.out.print(
"\nLa cadena invertida es: "
);
19
20
for
(
int
cuenta = s1.length() -
1
; cuenta >=
0
; cuenta-- )
21
System.out.printf(
"%s "
, s1.charAt( cuenta) );
22
23
// copia los caracteres de la cadena a arregloChar
24
s1.getChars(
0
,
4
, arregloChar,
0
);
25
System.out.print(
"\nEl arreglo de caracteres es: "
);
26
27
for
(
char
caracter : arregloChar )
28
System.out.print( caracter );
29
30
System.out.println();
31
}
// fin de main
32
}
// fin de la clase VariosString
s1: hola a todos
Longitud de s1: 12
La cadena invertida es: s o d o t a a l o h
El arreglo de caracteres es: hola
30.3 La
clase
String
1301
30_MAQ_CAP_30_DEITEL.indd1301
5/8/084:22:31PM