Double

Tema 4. Clases de utilidad
n
n
n
n
n
n
Arrays
Clases String y StringBuffer
Wrappers
Clase Math
Java Collections Framework (JCF)
Clases para manejo de fechas y horas
1
Arrays
n
Características
n
n
n
n
n
Se crean con el operador new seguido del tipo y número de
elementos
Nº de elementos del array: variable miembro implícita
length (Ej: vec.length)
Se puede acceder a los elementos de un array con los
corchetes [] y un índice que varía de 0 a length-1
Pueden crearse arrays anónimos
Creación
double []x;
x = new double [100];
Referencia a un array
double [] x = new double [100];
2
Ejemplos creación arrays
n
n
n
n
Creación array de 10 enteros, inicializados por defecto a 0
int []v = new int [10];
Creación array inicializado con valores
int []v = {0,1,2,3,4,5,6,7,8,9};
String []dias={“lunes”,”martes”,”miercoles”,”jueves”};
Array de 5 objetos
MiClase []listaObj=new MiClase[5];
for(i=0;i<5;i++) listaObj[i]=new MiClase();
Array anónimo
obj.metodo(new []String = {“uno”,”dos”,”tres”});
3
Arrays bidimensionales
n
n
Una matriz es un vector de vectores fila
Creación estática:
n
n
int [][] mat = new int[3][4];
Creación dinámica:
int [][] mat; // referencia a matriz
// creación del vector de referencias a las filas
mat = new int [nfilas][];
// reserva de memoria para las filas
for(int i = 0;i<nfilas;i++) mat[i]=new int [ncols];
n
Creación + inicialización:
int [][] b = {{1,2,3},{4,5,6}};
4
Clases String y StringBuffer
n
Orientadas a manejar cadenas de caracteres
n
String: manejo de cadenas de caracteres
constantes
n
n
StringBuffer: permite modificar la cadena:
inserciones, borrados, ...
n
n
Más eficiente
Más posibilidades
Pertenecen al paquete java.lang
n
No hay que importar las clases
5
Clase String
n
Creación:
n
n
String str1 = “hola”;
Métodos:
n
n
n
n
n
char charAt(int index)
Devuelve el carácter de la posición especificada
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Copia caracteres en la posición indicada de un array de caracteres
int indexOf(String str, int fromIndex)
Devuelve la posición en la que aparece por 1ª vez str a partir de la
posición indicada
int length()
Devuelve la longitud de la cadena
String substring(int beginIndex, int endIndex)
Devuelve una subcadena
6
Clase StringBuffer (i)
n
n
Se utiliza cuando se desea modificar una cadena de
caracteres
Constructores:
n
n
n
StringBuffer()
Crea un StringBuffer sin caracteres con una capacidad inicial
de 16 caracteres
StringBuffer(int length)
Crea un StringBuffer sin caracteres con una capacidad inicial
especificado por el argumento length
StringBuffer(String str)
Crea un StringBuffer a partir de un String
7
Clase StringBuffer (ii)
n
Métodos:
n
n
n
n
n
n
n
StringBuffer append(...) → Diferentes definiciones para
añadir un String o una variable al StringBuffer
int capacity() → Devuelve la capacidad del StringBuffer
StringBuffer delete(int start, int end) → Elimina los
caracteres en una subcadena del StringBuffer
StringBuffer insert(int,...) → Inserta un String o un valor
en la posición especificada del StringBuffer
StringBuffer reverse() → Cambia el orden de los
caracteres
void setLength(int newLength) → Cambia el tamaño del
StringBuffer
String toString() → Convierte a String
8
Wrappers
n
Son clases diseñadas como complemento de los tipos
primitivos
n
n
Wrapper (envoltorio)
n
n
n
Los tipos primitivos son los únicos elementos de Java que no
son objetos
n Se pasan por valor → no pueden modificarse
Objeto cuya variable miembro es un tipo primitivo
Proporcionan métodos para realizar tareas con los tipos
primitivos (ej: conversión a cadena de caracteres)
Existe una clase Wrapper para cada tipo primitivo
numérico:
n
Clases Byte, Short, Integer, Long, Float y Double
9
Clase Double
n
Jerarquía
n
n
Métodos
n
n
n
n
n
java.lang.Object ← java.lang.Number ← java.lang.Double
Double(double) y Double(String) → Constructores
double doubleValue(), float floatValue(), long longValue(),
int intValue(), short shortValue() y byte byteValue() →
Métodos para obtener el valor del tipo primitivo
String toString() y Double valueOf(String) → Conversores
con la clase String
boolean isInfinite() y boolean isNaN() → Chequeo de
condiciones
Constantes
n
MAX_VALUE, MIN_VALUE, NaN, NEGATIVE_INFINITE,
POSITIVE_INFINITE
10
Clase Integer
n
Jerarquía
n
n
Métodos
n
n
n
n
n
java.lang.Object ← java.lang.Number ← java.lang.Integer
Integer(int) y Integer(String) → Constructores
double doubleValue(), float floatValue(), long longValue(),
int intValue(), short shortValue() y byte byteValue() →
Métodos para obtener el valor del tipo primitivo
String toString() y Integer valueOf(String) → Conversores
con la clase String
String toBinaryString(int), String toHexString(int), String
toOctalString(int) → Conversores a cadenas en distintas
bases
Constantes
n
MAX_VALUE, MIN_VALUE
11
Ejemplo Wrappers
n
Los Wrappers pueden utilizarse para convertir cadenas
de caracteres en números:
String numDecimalString = "8.978";
float numFloat = Float.valueOf(numDecimalString).floatValue();
// numFloat = 8.978
double numDouble =
Double.valueOf(numDecimalString).doubleValue();
// numDouble = 8.978
String numIntString = "1001";
int numInt = Integer.valueOf(numIntString).intValue();
// numInt = 1001
12
Clase Math
n
n
Jerarquía: java.lang.Object ← java.lang.Math
Proporciona métodos static para realizar
operaciones matemáticas
n
n
n
n
n
n
n
double acos(double a), double asin(double a), double
atan(double a),
double sin(double a), double cos(double a)
double exp(double a)
double log(double a)
double pow(double a,double b)
...
Proporciona las constantes E y PI
13
Java Collections Framework
n
JCF (estructura de colecciones de Java):
n
n
n
n
Conjunto de clases e interfaces para
trabajar con colecciones de objetos
Introducida en la versión 1.2 del JDK
Jerarquía de interfaces
Jerarquía de clases
14
Jerarquía de interfaces
Collection
Map
Set
List
HashSet
ArrayList
SortedSet
TreeSet
LinkedList
HashMap
WeakHashMap Las interfaces determinan
las capacidades de las
HashTable
clases que implementan
Vector
SortedMap
Stack
TreeMap
Comparable
Iterator
Comparator
ListIterator
Ej: Las clases ArrayList y LinkedList
implementan la interface List. Disponen
de los mismos métodos y se pueden
utilizar de la misma forma. La diferencia
está en la implementación
15
Jerarquía de clases
AbstractCollection
AbstractSet
HashSet
TreeSet
AbstractList
ArrayList
AbstractMap
TreeMap
HashMap
AbstractSequentialList
LinkedList
WeakHashMap
Collections
Arrays
ü Collections y Arrays no son abstract, pero no tienen constructores.
Contienen métodos para operaciones de ordenación, búsqueda, ...
16
Interfaces de la JCF
n
n
n
n
n
n
Collection: Define métodos para tratar una
colección genérica de elementos
Set: Colección que no admite elementos repetidos
SortedSet: Set cuyos elementos se mantienen
ordenados según el criterio establecido
List: Admite elementos repetidos y mantiene un
orden inicial
Map: Cjto. pares clave/valor (sin repetición de
claves)
SortedMap: Map cuyos elementos se mantienen
ordenados según el criterio establecido
17
Interfaces de soporte
n
n
n
n
Iterator: Dispone de métodos para recorrer una
colección y borrar elementos
ListIterator: Permite recorrer listas en ambos
sentidos
Comparable: Declara el método compareTo() que
permite ordenar las colecciones según un orden
natural (String,Date, Integer, ...)
Comparator: Declara el método compare() y se
utiliza en lugar de Comparable cuando se desea
ordenar objetos no estándar
18
Clases de propósito general
n
n
n
n
n
n
n
HashSet: Interface Set implementada mediante una hash table
(tabla dispersa)
TreeSet: Interface SortedSet implementada mediante un
árbol binario ordenado
ArrayList: Interface List implementada mediante un array
LinkedList: Interface List implementada mediante una lista
enlazada
HashMap: Interface Map implementada mediante una hash
table
WeakHashMap: Interface Map implementada de modo que la
memoria de los pares clave/valor pueda ser liberada cuando las
claves no tengan referencia desde el exterior de la
WeakHashMap
TreeMap: Interface SortedMap implementada mediante un
árbol binario
19
Clases adicionales
n
Clases históricas
n
n
n
n
Clase Collections
n
n
Clases Vector, Stack y HashTable
No siguen las reglas de diseño del JCF
Se han mantenido por motivos de compatibilidad
Dispone métodos static para ordenar,
desordenar, invertir el orden, realizar búsquedas,
llenar, copiar, hallar el mínimo y hallar el máximo
Clase Arrays
n
Contiene métodos static para ordenar, llenar,
realizar búsquedas y comparar los arrays clásicos
20
Clases relacionadas con fechas
y horas
n
n
Clase Date
Clase Calendar
n
n
Clase DateFormat
n
n
Clase GregorianCalendar
Clase SimpleDateFormat
Clase TimeZone
n
Clase SimpleTimeZone
21
Clase Date
n
Representa un instante de tiempo con precisión de
milisegundos (ms)
n
n
La información se almacena en un entero long de 64 bits
que contiene los ms desde las 00:00:00 del 1/1/1970 GMT
(Greenwich mean time)
Métodos
n
n
n
n
Date() → crea un objeto a partir de la fecha y hora del
ordenador
Date(long) → crea un objeto a partir de los ms
transcurridos desde el 1/1/1970, 00:00:00 GMT
boolean after(Date) y boolean before(Date) → indica si la
fecha es posterior o anterior a la fecha especificada
long getTime() y void setTime(long) → obtiene o
establece los ms transcurridos desde el 1/1/1970, 00:00:00
GMT
22
Clases Calendar y
GregorianCalendar
n
n
n
Clase abstract que dispone de métodos para
convertir objetos de la clase Date en enteros que
representan fechas y horas
La clase GregorianCalendar deriva de Calendar y
es la que se utilizará
Representación de fechas y horas:
n
n
n
n
n
Horas: enteros de 0 a 23
Minutos y segundos: enteros entre 0 y 59
Días del mes: enteros entre 1 y 31
Meses del año: enteros de 0 a 11
Años: enteros de 4 dígitos (si se utilizan dos dígitos, se resta
1900)
23
Variables miembro y
constantes de Calendar
n
n
n
n
n
n
n
int AM_PM → puede tomar 2 valores: las constantes AM y PM
int DAY_OF_WEEK → puede tomar los valores int: SUNDAY,
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY y
SATURDAY
int MONTH → puede tomar los valores int: JANUARY,
FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST,
SEPTEMBER, OCTOBER, NOVEMBER y DECEMBER
int HOUR → indica la hora en relojes de 12 horas
int HOUR_OF_DAY → indica la hora en relojes de 24 horas
Los enteros ERA, YEAR, MINUTE, SECOND, MILLISECOND
tienen un significado evidente
int ZONE_OFFSET y int DST_OFFSET indican la zona horaria
y el desfase de segundos respecto a la zona GMT
24
Métodos de la clase Calendar
n
n
n
La clase Calendar dispone de un gran número de
métodos para establecer los valores de la fecha y la
hora
int get(int field) → obtiene el valor del campo
especificado
void set(...) → establece el valor de los campos
especificados
n
n
n
n
void set(int
void set(int
void set(int
void set(int
int second)
field, int value)
year, int month, int date)
year, int month, int date, int hour, int minute)
year, int month, int date, int hour, int minute,
25
Clase GregorianCalendar
n
Deriva de la clase Calendar
n
n
Añade las constantes BC (Before Christ) y AD (Anno
Domini) para la ERA
Constructores
n
n
n
n
GregorianCalendar() → crea un objeto usando la fecha y
hora actual en la zona de tiempo por defecto
GregorianCalendar(int year, int month, int date) → crea
un objeto usando la fecha especificada
GregorianCalendar(int year, int month, int date, int hour,
int minute) → crea un objeto usando la fecha y hora
especificada
GregorianCalendar(int year, int month, int date, int hour,
int minute, int second) → crea un objeto usando la fecha y
hora especificada
26
Ejemplo
Date trialTime = new Date();
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(trialTime);
System.out.println("ERA: " + gc.get(Calendar.ERA));
System.out.println("YEAR: " + gc.get(Calendar.YEAR));
System.out.println("MONTH: " + gc.get(Calendar.MONTH));
System.out.println("WEEK_OF_YEAR: "+
gc.get(Calendar.WEEK_OF_YEAR));
System.out.println("WEEK_OF_MONTH: "+
gc.get(Calendar.WEEK_OF_MONTH));
System.out.println("DATE: " + gc.get(Calendar.DATE));
System.out.println("DAY_OF_MONTH: " +
gc.get(Calendar.DAY_OF_MONTH));
27
Clases DateFormat y
SimpleDateFormat
n
DateFormat:
n
n
n
n
Clase abstract del package java.text (no
pertenece a java.util, como las anteriores)
Permite dar formato a fechas y horas
Dispone de métodos static para convertir Strings
representando fechas y horas en objetos de la
clase Date, y viceversa
SimpleDateFormat:
n
n
Clase derivada de DateFormat
Constructor: SimpleDateFormat(String pattern)
n
El String indica el formato a utilizar
28
Ejemplo
public static void main(String arg[]) throws ParseException
{
SimpleDateFormat sdf1 =
new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yy");
Date d = sdf1.parse("12-04-1968 11:23:45");
String s = sdf2.format(d);
System.out.println(s);
}
29
Clases TimeZone y
SimpleTimeZone
n
TimeZone:
n
n
n
n
Clase abstract que sirve para definir la zona
horaria
Pertenece al package java.util
public static TimeZone getDefault() → devuelve
la zona horaria del ordenador en el que se ejecuta
el programa
SimpleTimeZone:
n
n
Deriva de TimeZone
Es la que se utiliza
30