3.7 Caracteres, String y Otros Tipos de Datos 3.7.1 Arreglos

Anuncio
18/04/2004
3.7 Caracteres, String
y Otros Tipos de
Datos
3.7.1 Arreglos
Arreglos, Character, String,
StringBuffer, Number, Date
Arreglos en Java
l
l
l
Arreglos en Java son agrupaciones ordenadas de
elementos
Los elementos pueden ser tipos primitivos o
referencias (incluso referencias a otros arreglos)
Las dimensiones de un arreglo se omiten en la
declaración de variables
l
l
l
Los índice varían desde 0 a largo-1
l
l
La dimensión se determina en la creación del arreglo
Tamaño permanece fijo después de su creación
Ejemplo de un Arreglo
public class demoArreglo {
public static void main(String[] args) {
// declarar un arreglo de enteros
int[] unArreglo;
// crear un arreglo de enteros
unArreglo = new int[10];
// asigna un valor a cada elemento del arreglo e imprime
for ( int i = 0; i < unArreglo.length ; i + +) {
anArray[i ] = i;
System.out.print(unArreglo[i] + " ") ;
}
System.out.println();
}
}
Acceso ilegal lanza IndexOutOfBoundsException
Los arreglos no se pueden derivar
Uso de Arreglos
Arreglo de Arreglos
Declaración de un Arreglo (sin tamaño)
public class ArregloDeArreglo {
l
tipo[] variable;
Creación de un arreglo vacío (especifica tamaño)
l variable = new tipo[tamaño];
l
Creación e inicialización rápida
public static void main(String[] args) {
String[][] cartoons = {
{"Flintstones ","Fred" ,"Wilma" ,"Pebbles", "Dino" } ,
{"Rubbles ","Barney"," Betty"," Bam Bam " },
{"Jetsons ","George","Jane","Elroy "," Judy ","Rosie ","Astro" },
{"Scooby Doo Gang ","Scooby D o o"," Shaggy" ,"Velma" ,"Fred", "Daphne" }
};
for ( int i = 0; i < cartoons.length; i++ ) {
System.out.print(cartoons[i][0] + ": ");
for ( int j = 1; j < cartoons[i].length; j++)
System.out.print(cartoons[i][j] + " ");
System.out.println();
}
}
}
l
l
l
l
l
l
tipo[] variable = {val0 , val1 , ... , valn-1 };
Acceso a un elemento del arreglo
variable[indice]
Tamaño del arreglo
l
variable.length
Flintstones: Fred Wilma Pebbles Dino
Rubbles: Barney Betty Bam Bam
Jetsons: George Jane Elroy Judy R o s i e Astro
Scooby D o o Gang: Scooby Doo Shaggy Velma Fred Daphne
1
18/04/2004
Copiado de Arreglos
l
Para copiar un arreglo se puede usar método
arraycopy de System :
l
public static void arraycopy(
Object fuente,
int indiceFuente,
Object destino,
int indiceDestino,
int largo)
Ejemplo de Copia de Arreglos
public class DemoCopiaArreglos {
public static void main(String[] args) {
char[] copiarDesde = { 'd', 'e', 'c', 'a', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
char[] copiarA = new char[7];
}
}
cafeina
Utilidades para arreglos
l
l
l
l
static
static
static
static
l
int binarySearch(<tipo>[] a, <tipo> key)
boolean equals(<tipo>[] a, <tipo>[] a2)
void fill(<tipo>[] a, <tipo> val)
void sort(Object[] a)
Los objetos deben implementar la interfaz java.util.Comparable
Clases Básicas para
Caracteres
l
l
l
3.7.2 Caracteres y
Strings
Clase utilitaria java.util.Arrays
l
System.arraycopy(copiarDesde, 2, copiarA, 0, 7);
System.out.println(new String(copiarA));
Character.Clases cuyas instancias pueden
mantener un único valor (wrapper)
String. Clase para almacenar y manipular
datos inmutables compuestos de múltiples
caracteres
StringBuffer. Clase para almacenar y
manipular datos mutables compuestos de
múltiples caracteres
Métodos de Character
l
l
l
l
l
l
Character(char )
l Constructor crea objeto inmutable
int compareTo(Character )
l Retorna entero que compara con otro carácter
boolean equals(Object)
l Retorna true si son de igual valor
String toString ()
l Convierte a string
char charValue()
l Retorna valor del objeto
isUpperCase(char )
l Retorna true si es mayúscula
2
18/04/2004
Ejemplo de Character
public class CharacterDemo {
public staticvoid main(String args[]) {
Character a = new Character('a');
Character a2 = new Character('a');
Character b = new Character('b');
int diferencia = a.compareTo(b);
if (difference == 0) {
System.out.println("a es igual a b.");
} else if (diferencia < 0) {
System.out.println("a es menor que b.");
} else if (diferencia > 0) {
System.out.println("a es mayor que b.");
}
System.out.println("a es " + (( a.equals(a2)) ? “igual" : “no igual") + " a a2.");
System.out.println(“El carácter " + a.toString() + " es " +
(Character.isUpperCase(a.charValue()) ? “mayúscula" : “minúscula"));
}
}
Creación de Strings y
StringBuffers
l
l
Java permite crear un String en diversas situaciones
Ejemplo:
Ejemplo de String y
StringBuffer
public class StringsDemo {
public static void main(String [] args) {
String palindrome = “ recocer ";
int largo = palindrome.length();
StringBuffer destino = new StringBuffer(len);
for (int i = (largo - 1); i >= 0; i --) {
destino.append(palindrome.charAt(i));
}
System.out.println(destino.toString ());
}
}
Métodos Accesores
(Comunes)
l
int length()
l
l
“Este es un String" // literal
l
String palindrome = “recocer"; // referencia String
char[] ArregloHola = { 'h', ‘o', 'l', ‘a'}; // arreglo de caracteres
l
l
System.out.println(StringHola);
StringBuffer debe siempre usar new para crear un
string
n
Métodos Específicos de
String
l
indexOf(int caracter ),
lastIndexOf(int caracter )
l
l
l
l
Retorna índice de primera (última) ocurrencia de carácter,
buscando hacia delante (atrás) desde índice especificado
indexOf(String str),
lastIndexOf(String str )
l
l
Retorna índice de primera (última) ocurrencia de String str ,
buscando hacia delante (atrás) desde índice especificado.
Convierte a string
Métodos Específicos de
String
l
l
l
l
Retorna índice de la primera (última) ocurrencia del String str.
indexOf(String str, int desde ),
lastIndexOf(String str , int from)
Obtiene parte del String
Los dos enteros indican primera y última posición. Sino se
indica segundo entero, se asume hasta el final
String toString()
indexOf(int car , int desde) ,
lastIndexOf(int car, int desde)
l
l
Retorna índice de la primera (última) ocurrencia de caracter
l
Obtiene carácter en posición pos. 0 es el primero y
length()-1 el último
String substring(int), String substring(int, int)
l
String StringHola = new String(ArregloHola);
Obtiene el largo del String o StringBuffer
char charAt(int pos)
int compareTo(String otroString)
l Compara dos lexicográficamente(interfaz Comparable)
String concat(String str)
l Concatena el string str al final
String toLowerCase()
l Convierte un String a minúsculas
String toUpperCase()
l
l
Convierte un String a mayúsculas
etc.
l
VER:
http://java.sun.com /j2se/1.4/docs/api/java/lang /String.html
3
18/04/2004
Métodos de StringBuffer
StringBuffer append(String str)
l Agrega str al final del buffer de string.
int capacity()
l Retorna la capacidad actual del buffer de string
StringBuffer insert(int offset, String str)
l Inserta str en la posición offset del buffer de string.
StringBuffer delete (int inicio, int fin)
l Elimina los caracteres entre inicio y fin
l
l
l
l
l
VER:
http://java.sun.com /j2se/1.4/docs/api/java/lang /StringBuffer.ht
ml
Clases Extendidas de
Number
Clase Number
l
byte byteValue()
l Retorna el valor del número
double doubleValue()
l Retorna el valor del número
float floatValue()
l Retorna el valor del número
int intValue()
l Retorna el valor del número
long longValue()
l Retorna el valor del número
short shortValue()
l Retorna el valor del número
l
l
l
l
l
especificado como byte
especificado como double
especificado como float
l
l
l
l
l
l
especificado como long
l
l
l
l
Byte. Clase envolvente para byte
Double. Clase envolvente para double
Float. Clase envolvente para float
Integer. Clase envolvente para int
Long. Clase envolvente para long
Short. Clase envolvente para short
BigDecimal. Número decimal de precisión arbitraria
BigInteger. Número entero de precisión arbitraria
especificado como short
exponenciación
logaritmos
raíz cuadrada
Funciones trigonométricas
Máximos y mínimos
Redondeos
etc.
Ver
l
l
l
especificado como int
El paquete java.lang.Math contiene funciones tales
como:
l
l
l
Funciones Matemáticas
l
Wrappers y funciones
etc.
l
l
3.7.3 Números
http://java.sun.com /j2se/1.4/docs/api/java/lang /Math.html
Formatos de Números
l
l
Los programas almacenan y operan números en
forma independiente de la localidad
Al desplegar los valores con toString se debieran
hacer en el formato de la localidad
l
l
l
l
Inglés:
Francés:
Alemán:
123456.78
123 456,78
123.456,78
Java provee soporte para realizar tales
conversiones en paquete java.text
l
l
NumberFormat
DecimalFormat
4
18/04/2004
Clase java.util.Date
3.7.4 Date
Fecha y hora
l
l
l
Útil para manejar datos fecha/hora
Constructor por defecto entrega fecha actual
Operaciones
l
l
l
l
Comparación
Suma
Formato
Clase utilitarias
l
l
java.util.Calendar
java.text.DateFormat
5
Descargar