Documente Academic
Documente Profesional
Documente Cultură
Introduccin
Clases bsicas del paquete java.lang Object
clase raz, las clases que no extienden a ninguna clase explcitamente extienden a Object.
Class Math: Clase que contiene a travs de mtodos estticos las operaciones matemticas. System y Runtime: que contienen informacin sobre el entorno. Las clases de envoltura sobre los tipos primitivos, que permiten a los valores ser tratados como objetos.
2
En las dems clases se recomienda que lo redefina el programador, de lo contrario aplica el criterio ms restrictivo: ((Object)x).equals(y) x==y
Los mtodos notify se usan para notificar a los hilos que esperan que su espera ha finalizado.
public final void notify() public final void notifyAll()
6
Ejemplo
import java.util.*; public class ClassApp { public static void main(String args[]){ Vector v = new Vector(); System.out.println(v.getClass().getName()); System.out.println(v.getClass().getSuperclass().getName()); System.out.println(v.getClass().isInterface()); } }
java.util.Vector java.util.AbstractList false
Clase Math
Ofrece un conjunto amplio de mtodos matemticos en forma de clase puramente esttica
Contenida en java.lang y definida sobre StrictMath
Constantes
public static final double E //valor del nmero e public static final double PI // valor del nmero pi
Funciones Trigonomtricas
public static public static public static Nota: a es el double sin(double a) // seno double cos(double a) // coseno double tan(double a) // tangente ngulo en radianes en todos los casos anteriores.
public static double asin(double a) // arco seno public static double acos(double a) // arco coseno public static double atan(double a) // arco tangente public static double toRadians(double angdeg) // devuelve el valor en radianes public static double toDegrees(double angrad) // devuelve el valor en grado 9
Clase Math
Funciones Exponenciales
public public public public static static static static double double double double exp(double a) // ea log(double a) // logaritmo de a pow(double a, double b) //ab sqrt(double a) // raz cuadrada
Redondeo
public static int round(float a) // retorna el int ms cercano a al valor double ( (int) Math.floor(a + 0.5f) ) public static long round(double a) // retorna el long ms cercano al valor double ( (long) Math.floor(a + 0.5d) ) public static double rint(double a) // retorna el doble ms prximo a un valor entero public static double floor(double a) // retorna el doble inferior entero public static double ceil(double a) // retorna el doble superior entero
10
Clase Math
Otros:
public static double random() // nmero aleatorio entre [0,1) siguiendo una distribucin (aproximadamente) uniforme public public public public public public public public public public public public static static static static static static static static static static static static int abs(int a) // valor absoluto long abs(long a) float abs(float a) double abs(double a) int max(int a, int b) // valor mximo int max(int a, int b) float max(float a, float b) double max(double a, double b) int min(int a, int b) // valor mnimo long min(long a, long b) float min(float a, float b) double min(double a, double b)
11
12
13
Clase System
La clase System proporciona una interfaz estndar a los recursos y funciones comunes del sistema.
No puede ser instanciada (puramente esttica)
Terminar ejecucin
public static void exit(int status)
Status, se suele poner a 0 si la terminacin es normal.
14
Propiedades de Sistema
Clave
java.version java.vendor java.vendor.url java.home java.vm.specification.version java.vm.specification.vendor java.vm.specification.name java.vm.version java.vm.vendor java.vm.name java.specification.version java.specification.vendor java.specification.name java.class.version java.class.path os.name os.arch os.version file.separator path.separator line.separator user.name user.home user.dir
15
System.in
Mtodos de lectura abstract int read(); // lee el siguiente byte int read(byte[] b); // lee un n de bytes y los almacena en el buffer b int read(byte[] b, int off, int len); // lee un n de bytes
System.out
17
18
19
Clase Runtime
Se obtiene un objeto de tipo Runtime a partir de la clase System Devuelve un entorno de ejecucin (Runtime). public static Runtime getRuntime() Permite acceder a recursos relacionados con la ejecucin. A partir del cual se obtiene cantidad de memoria libre y total. public long freeMemory() public long totalMemory() Tiene mtodo que permite la ejecucin de otras aplicaciones Ejemplo: public class RuntimeMemApp { public static void main(String args[]){ Runtime r = Runtime.getRuntime(); System.out.println(r.totalMemory()); //memoria total en bytes System.out.println(r.freeMemory()); //memoria libre en bytes //Nota: memoria disponible para la MVJ } }
20
Clases de Envoltura
Los tipos primitivos existen por cuestiones de eficiencia. Se impide a los tipos primitivos ser tratados como objetos. Clases de Envoltura (en el paquete java.lang) Boolean Byte Character Number Integer Short Long Float Double
21
Clases de Envoltura
Cada clase de envoltura proporciona
Constructores con el tipo primitivo como argumento Constructor con un String como argumento
Disponible:
mtodo toString(). mtodo tipoValue, como charValue, booleanValue, etc. conversiones hacia / desde String. Ejemplo:
boolean bandera=(new Boolean(true)).booleanValue(); String s=(new Boolean( bandera )).toString();
22
Utilidades java.util
Estructuras de Datos
Enumeraciones Vectores Pilas Diccionarios Tablas hash Propiedades
Utilidades varias
Anlisis de cadena Generacin de nmeros aleatorios
23
Enumeraciones
Enumeraciones Interface Enumeration public boolean hasMoreElements() public Object nextElement()
Hay que hacer la conversin oportuna desde Object.
Una enumeracin slo se puede recorrer una vez, ya que no hay forma de volver al primer elemento. Consumidas por su uso. No tiene porqu haber una coleccin de datos detrs aunque lo normal es que la haya.
24
Vectores
Clase Vector, ofrece la posibilidad del manejo de arrays crecientes. Colecciones de objetos (no tipos primitivos). Son redimensionables, pero el crecimiento es una operacin costosa, por lo que se dimensionan con capacidad mayor que el tamao. Constructores:
public Vector(int initialCapacity,int capacityIncrement) public Vector(int initialCapacity) //Incremento=1 public Vector() //Capacidad inicial=10, incremento=1.
25
Vectores
Mtodos public void addElement(Object obj) //Aade al final public void insertElementAt(Object obj, int index) //Indice desde 0, incrementa capacidad si lo necesita. public void setElementAt(Object obj, int index) public void removeElementAt(int index) //No altera capacity, solo size public boolean removeElement(Object obj) //Es lo mismo que v.removeElementAt(0) public void removeAllElements() public void copyInto(Object[] anArray) public boolean contains(Object elem) //testea con equals.
26
Vectores
Mtodos
public int indexOf(Object elem) public int indexOf(Object elem, int index) public Object elementAt(int index) public Object firstElement() public Object lastElement() public int size() public int capacity() public void ensureCapacity(int minCapacity) //Para forzar explcitamente un incremento de capacidad, (negativo la dobla). public void trimToSize() //Ajusta la capacidad al valor de size. public void setSize(int newSize) public Enumeration elements()
27
Pilas
La clase Stack es una subclase de Vector que implementa una estructura FIFO. Hereda de Vector e implementa una LIFO.
public boolean empty() public Object peek() //Devuelve el objeto de la cima sin consumirle. //java.util.EmptyStackException si est vaca. public Object pop() //java.util.EmptyStackException si est vaca. public Object push(Object item) public int search(Object o) //Devuelve el nmero de pops necesarios para
obtenerlo. //-1 si no lo encuentra..
31
Ejemplo: Pilas
Ejemplo: Se crea una pila en la que se aaden valores. Se vaca la pila.
import java.lang.System; import java.util.Stack; public class StackApp { public static void main(String args[]){ Stack s = new Stack(); s.push("one"); s.push("two"); s.push("three");
System.out.println("Top of stack: "+s.peek());
Diccionarios
Clase Dictionary
Es una clase abstracta, representa un contenedor en el que almacenar pares clave/valor. Subclases Hashtable y Properties.
public abstract int size() //Nmero de pares que contiene el diccionario. public abstract boolean isEmpty() public abstract Enumeration keys() public abstract Enumeration elements() public abstract Object get(Object key) public abstract Object put(Object key, Object value) //No puede haber claves duplicadas, luego si ya existe la clave se machaca el valor antiguo. public abstract Object remove(Object key)
33
Tablas Hash
Hastable, hereda de Dictionary e implementa
Cloneable. Factor de Carga=Numero EntradasTamao/Capacidad. Cuando se supera el factor de carga se hace rehash. La clave suele ser del tipo String, y debe de tener implementado equals y hashCode (que se heredan de Object). Constructores:
public Hashtable(int initialCapacity, float loadFactor) public Hashtable(int initialCapacity) //loadFactor=0.75 public Hashtable() //loadFactor=0.75
Mtodos:
public boolean contains(Object value) public boolean containsKey(Object key) protected void rehash() public Object get(Object key) public Object put(Object key, Object value)
34
while (iter.hasMoreElements())
System.out.print(iter.nextElement()+", ");
System.out.println();
System.out.println("height: +h.get("height")); System.out.println("weight: +h.get("weight")); System.out.println("eyes: +h.get("eye color")); System.out.println("hair: +h.get("hair color")); h.remove("weight"); System.out.println("h: "+h);
} }
35
Propiedades
Hereda de Hashtable y es persistente, aadiendo mtodos para especificar valores por omisin.
Las claves y valores han de ser Strings.
Constructores
public Properties() public Properties(Properties defaults)
Mtodos
public String getProperty(String key) //Si no lo encuentra y hemos utilizado el 2 constructor busca recursivamente en el Properties pasado por parmetro, si de todas formas no lo encuentra devuelve null. public Object setProperty(String key, String value) //Igual que public abstract Object put(Object key, Object value) heredado de dictionary. public void list(PrintStream out) public void load(InputStream inStream) throws IOException public void save(OutputStream out, String header) //Deprecated public void store(OutputStream out, String header) throws IOException 36
Ejemplo: Propiedades
Ejemplo:Escritura/Almacenamiento de propiedades
Properties tabla; FileOutputStream output; ... tabla=new Properties(); try{ output=new FileOutputStream(miconfig.dat); tabla.store( output, Propiedades de Muestra); output.close(); } catch (IOException e) { System.out.println(Error al guardar las propiedades); throw e; }
37
Ejemplo: Propiedades
Ejemplo:Lectura/carga de propiedades.
Properties tabla; FileInputStream input; ... tabla=new Properties(); try{ input=new FileInputStream(miconfig.dat); tabla.load( input); input.close(); } catch (IOException e) { System.out.println(Error al cargar las propiedades); throw e; }
38
Utilidades Varias. Anlisis de Cadenas Permite dividir una cadena en tokens. Implementa Enumeration, donde recoger los tokens. Necesito una cadena de entrada y otra con los delimitadores, por defecto blancos. Constructores:
public StringTokenizer(String str, String delim,boolean returnTokens) public StringTokenizer(String str, String delim) public StringTokenizer(String str) El tercer argumento opcional es para saber si los delimitadores han de devolverse como otro token (true) o no.
Mtodos
public String nextToken() nextToken public boolean hasMoreElements() hasMoreElements public int countTokens()
39
Utilidades Varias. Nmeros Aleatorios Random, es un generador de nmeros pseudo-aleatorios. El constructor puede tomar como argumento una semilla.
La clase Constructores:
public Random(long seed) Random public Random() { this(System.currentTimeMillis()); } Random
Mtodos:
public int nextInt(int n) nextInt
Devuelve un int distribuido uniformemente a lo largo del rango (0,n-1). public int nextInt() { nextInt(Math.pow(2,32)); } nextInt
nextLong() //Entre o y 264-1. nextLong nextFloat() //[0,1) nextFloat nextDouble() //[0,1) nextDouble nextGaussian()//Distrib. Gauss nextGaussian setSeed(long seed) setSeed
//centro=0, y devStd=1.
40
public void
Bibliografa
Horstmann, G.S., Cornell, G. Java 2. Fundamentos. Volumen 1. Prentice Hall. 2003.
Captulo 5, Herencia