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
© Copyright 2024