Los Paquetes en java Mecanismo utilizado en Java para organizar las clases de una manera estructurada y jerárquica. Los paquetes no son más que directorios en el que se almacenan los archivos .class. Un paquete puede estar compuesto de otros subpaquetes. En el caso de J2SE, existe un paquete principal llamado java, dentro de la cual se encuentran una serie de subpaquetes que almacenan las distintas clase del JDK. java.lang.String Los Paquetes en java VENTAJAS
Permiten organizar las clases de manera estructurada.
Control estricto del acceso a las clases.
Facilitan la reutilización de clases comunes.
Permiten compartir clases entre aplicaciones.
Evitan conflictos de nombres, cuando existen clases
con el mismo nombre. Ej: Clase Date Los Paquetes en java USO DE LOS PAQUETES
Las clases que se van a utilizar deben ser importadas,
para ello se debe utilizar la sentencia import antes de la definición de la clase: import nombrePaquete.*; //Todas las clases del paquete import nombrePaquete.nombreClase; //Una clase específica
Alimportar la Clase, podemos hacer referencia a la
misma únicamente a través de su nombre. Los Paquetes en java USO DE LOS PAQUETES En tiempo de ejecución, las dos variables que afectan el acceso a las clases de un paquete son: • PATH: Para localizar los archivos ejecutables del Sistema Operativo. • CLASSPATH: La usa Java para localizar clases y paquetes específicos. Todos los archivos en un paquete pueden ser almacenados en un archivo jar • jar = JavaArchive (Archivo Java) Los Paquetes en java PAQUETES DE USO GENERAL Las clases que estudiaremos en este capítulo se encuentran distribuidas en 4 paquetes de J2SE: • java.io • java.lang (importado implícitamente) • java.util • java.text Para empaquetar las clases, se debe incluir la declaración package como primera línea de código en la clase. package nombrePaquete; Los Paquetes en java PRINCIPALES PAQUETES – API JAVA Paquete Descripción
java.applet Clases para la creación de applets
java.awt Clases para crear interfaces de usuario con ventanas.
java.io Clases para manejar instrucciones de entrada/salida.
Clases imprescindibles para el uso del lenguaje. java.lang (Paquete por defecto). java.net Clases para soportar aplicaciones que acceden a redes Contiene clases que permiten el acceso a recursos del java.util sistema. Contiene clases para crear interfaces de usuario javax.swing mejorando AWT. (Componentes Java). La clase System Se encuentra en el paquete java.lang Clase utilizada para manejar la entrada (in) y salida (out, err) de datos en una aplicación. in, out y err son atributos estáticos de la clase System. System.in.read() permite leer un caracter a la vez. El método read() devuelve un entero char ingreso = (char)System.in.read();
Para mostrar datos en la pantalla, se pueden utilizar
los métodos sobrecargados print o println a través del atributo out System.out.println(“Hola”); La clase String Se encuentra en el paquete java.lang Pueden ser creados de las siguientes formas: String s = “Texto”; //HEAP - Pool de Strings (Se comparte) String s1 = new String(“Texto”); // HEAP
También pueden ser creados sin una referencia, como
parte de una sentencia return o con el método println System.out.println(“String no referenciado”);
Los String son inmutables, una vez que el Objeto se ha
creado, no puede ser modificado. La clase está definida como final (No se puede heredar). La clase String PRINCIPALES MÉTODOS • int length() • boolean equals(Object o) • boolean equalsIgnoreCase(String str) • int compareTo(String str) • int compareToIgnoreCase(String str) • char charAt(int indice) • boolean startsWith(String patron) • int indexOf(int caracter) • int indexOf(String str) • String substring(int inicio, int final) • String replace(char oldChar, char newChar) • String toUpperCase() • String toLowerCase() • static String valueOf(tipoDato var) La clase StringBuffer Se encuentra en el paquete java.lang Se utiliza cuando se quiere manipular el contenido de una cadena, para variar su tamaño. Permite crear String mutables. Deben ser creados utilizando el operador new:
StringBuffer sb = “Texto”; //No válido
StringBuffer sb1 = new StringBuffer(“Texto”); // Correcto
String y StringBuffer son clases totalmente
independientes. El tamaño por defecto de un StringBuffer es de 16 caracteres, y puede almacenar hasta 231 – 1 caracteres. La clase StringBuffer PRINCIPALES MÉTODOS • int length(); • char charAt( int index ); • void setCharAt( int index,char ch ); • StringBuffer deleteCharAt(int index) • String toString(); • void setLength( int newlength ); • int capacity(); • void ensureCapacity( int minimum ); • StringBuffer append(char c) • StringBuffer delete(int start, int end) • StringBuffer replace(int start, int end, String str) • StringBuffer insert(int offset, String str) • String substring(int start) • String substring(int start, int end) • StringBuffer reverse() Las clases Wrapper Todas se encuentran dentro del paquete java.lang Se utilizan en los siguientes casos: • Cuando los tipos de datos primitivos deben ser tratados como Objetos (Colecciones). int k = 5; Integer num = new Integer(k);
• Cuando a partir de un String que representa un valor
numérico se necesita pasar al tipo de dato primitivo correspondiente. String s = “4.65”; Float f = new Float(s); Las clases Wrapper Los Wrapper son Patrones de Diseño Estructurales porque proporcionan nuevas funcionalidades a los tipos de datos primitivos. Son inmutables.
No se puede realizar operaciones con los Wrapper, se
debe extraer el valor almacenado para poder operar, para ello existe un método xxxValue que devuelve el dato almacenado en el Objeto. float dato = f.floatValue(); int dato1 = num.intValue(); Las clases Wrapper Las clases Wrapper numéricas proporcionan un método estático parseXxx(String) que permite convertir la representación en forma de cadena de un número en el correspondiente tipo numérico. Donde Xxx es el nombre del tipo al que se va a convertir la cadena. String s1 = “22”, s2 = “99.7”; int n = Integer.parseInt(s1); double d = Integer.parseDouble(s2); Las clases Wrapper Tipo de Dato Primitivo Clase Wrapper char Character boolean Boolean byte Byte short Short int Integer long Long float Float double Double La clase Math Se encuentra en el paquete java.lang Proporciona métodos para la realización de las operaciones matemáticas más habituales en un programa. Todos los métodos de la clase Math son estáticos, por lo que no es necesario crear ninguna instancia de la clase para su utilización, de hecho NO es posible crear instancias de esta clase. Los argumentos decimales deben ser válidos, para ello se debe usar las clases NumberFormat y DecimalFormat del paquete java.text La clase Math PRINCIPALES MÉTODOS • Math.abs(int) • Math.sin(double) • Math.cos(double) • Math.exp(double) • Math.log(double) • Math.sqrt(double) • Math.pow(a,b) • Math.ceil(double) • Math.floor(double) • Math.round(double) • Math.random() • Math.max(a,b) • Math.min(a,b) El paquete java.math Paquete que contiene clases para realizar operaciones con un alto nivel de precisión. Trabajan con números de más de 64 bits. Las clases principales son: • BigInteger • BigDecimal EstosObjetos no se pueden operar con los operadores comunes, se debe utilizar los métodos definidos en las clases para sumar (add), restar (subtract), multiplicar (multiply), o dividir (divide). Uso de Fechas y números randómicos USO DE FECHAS Las fechas se utilizan en prácticamente todas las aplicaciones. Las siguientes clases se utilizan en el manejo de fechas: • Date • Calendar • GregorianCalendar • DateFormat • SimpleDateFormat Las 2 últimas sirven para dar formato a las fechas y se encuentran en el paquete java.text, las otras 3 se encuentran en el paquete java.util. Uso de Fechas y números randómicos NÚMEROS RANDÓMICOS Java proporciona 2 formas de generar números randómicos: • A través del método random() de la clase Math • Utilizando la clase Random
Laboratorio 5.9: Números Randómicos.
Aumentar un número aleatorio de días a una fecha.