Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las clases que Sun ha creado están almacenadas en librerías de clases llamadas
"paquetes". Para que una clase de un paquete esté disponible en su código, tiene que
importar el paquete, lo que quiere decir que el compilador localizará ese paquete para
esas clases. Además puede importar clases individuales que no son parte de un
paquete.
Por defecto, sólo las sentencias básicas de Java están disponibles en una aplicación,
las del paquete java.lang. El compilador automáticamente importa el paquete java.lang,
pero para usar el resto de las clases que vienen con Java tendrá que hacer la
importación con la instrucción import.
Observe que se pone un punto ('.') entre el paquete y los nombres de clase para
separarlos. Los paquetes Java estándares están almacenados en un gran paquete
llamado java, por lo que el paquete de utilidades se llama realmente java.uti1 (hay otros
grandes paquetes disponibles; por ejemplo, el paquete swing está almacenado en el
paquete java).
import java.util.Date;
public class app
Observe que si va a usar las sentencias import para importar clases en un programa,
éstas deberían estar en la parte de arriba del código. Así, podemosutilizar la clase Date,
como se indica a continuación (observe que estamoscreando un objeto de la clase Date
usado el operador Java new.
import java.util.Date;
public class app
I
public static void main(String[] args)
System.out.println("Hoy = " + new Date());
Como puede ver estudiando la forma general de la sentencia previa import, hay también
una técnica taquigráfica que carga todas las clases de un paquete; se puede usar un
asterisco ('*') para utilizar todas las clases de un paquete específico. A continuación se
indica cómo se podría hacer si quisiera importar todas las clases del paquete java.uti1
de una vez:
public class app
{
public static void main(String[] args)
{
System.out.println("Hoy = " + new Date());
}
}
Qué es un package
Un package es una agrupación de clases. En la API de Java 1.1 había 22 packages;
en Java 1.2 hay 59 packages, lo que da una idea del “crecimiento” experimentado por
el lenguaje. Además, el usuario puede crear sus propios packages.
Para que una clase pase a formar parte de un package llamado pkgName, hay que
introducir en ella la sentencia:
package pkgName;
que debe ser la primera sentencia del fichero sin contar comentarios y líneas en blanco.
Los nombres de los packages se suelen escribir con minúsculas, para distinguirlos de
las clases, que empiezan por mayúscula. El nombre de un package puede constar de
varios nombres unidos por puntos (los propios packages de Java siguen esta norma,
como por ejemplo java.awt.event).
Todas las clases que forman parte de un package deben estar en el mismo directorio.
Los nombres compuestos de los packages están relacionados con la jerarquía de
directorios en que se guardan las clases.
Ambas clases pertenecen al package java.lang, y por lo tanto no hay que importarlas.
Hay que indicar que el operador de concatenación (+) entre objetos de tipo String
utiliza internamente objetos de la clase StringBuffer y el método append().
Los métodos de String se pueden utilizar directamente sobre literals (cadenas entre
comillas), como por ejemplo: "Hola".length().
Métodos de la clase String
Los objetos de la clase String se pueden crear a partir de cadenas constantes o literals,
definidas entre dobles comillas, como por ejemplo: "Hola". Java crea siempre un objeto
String al encontrar una cadena entre comillas. A continuación se describen dos formas
de crear objetos de la clase String,
getChars(int, int, char[], int) Copia los caracteres indicados en la posición indicada
de un array de caracteres
indexOf(String, [int]) Devuelve la posición en la que aparece por primera vez
un String en otro String, a partir de una posición dada
(opcional)
lastIndexOf(String, [int]) Devuelve la última vez que un String aparece en otro
empezando en una posición y hacia el principio
CLASE MATH
La siguiente Tabla muestra los métodos matemáticos soportados por esta clase.
Manejo de Excepciones.
EXCEPCIONES
A diferencia de otros lenguajes de programación orientados a objetos como C/C++,
Java incorpora en el propio lenguaje la gestión de errores. El mejor momento para
detectar los errores es durante la compilación. Sin embargo prácticamente sólo los
errores de sintaxis son detectados durante este periodo El resto de problemas surgen
durante la ejecución de los programas.
En el lenguaje Java, una Exception es un cierto tipo de error o una condición anormal
que se ha producido durante la ejecución de un programa. Algunas excepciones son
fatales y provocan que se deba finalizar la ejecución del programa. En este caso
conviene terminar ordenadamente y dar un mensaje explicando el tipo de error que se
ha producido.
Un buen programa debe gestionar correctamente todas o la mayor parte de los errores
que se pueden producir. Hay dos “estilos” de hacer esto:
Al lanzar una excepción el método termina de inmediato, sin devolver ningún valor.
Solamente en el caso de que el método incluya los bloques try/catch/finally se
ejecutará el bloque catch que la captura o el bloque finally (si existe).
Todo método en el que se puede producir uno o más tipos de excepciones (y que no
utiliza directamente los bloques try/catch/finally para tratarlos) debe declararlas en el
encabezamiento de la función por medio de la palabra throws. Si un método puede
lanzar varias excepciones, se ponen detrás de throws separadas por comas, como por
ejemplo:
Las excepciones pueden ser lanzadas directamente por leerFichero() o por alguno de
los métodos llamados por leerFichero(), ya que las clases EOFException y
FileNotFoundException derivan de IOException.
Se recuerda que no hace falta avisar de que se pueden lanzar objetos de la clases
Error o RuntimeException (excepciones implícitas).
1. Gestionar la excepción con una construcción del tipo try {…} catch {…}.
2. Re-lanzar la excepción hacia un método anterior en el stack, declarando que su
método también lanza dicha excepción, utilizando para ello la construcción throws en el
header del método.
El código dentro del bloque try está “vigilado”: Si se produce una situación anormal y se
lanza por lo tanto una excepción el control salta o sale del bloque try y pasa al bloque
catch, que se hace cargo de la situación y decide lo que hay que hacer. Se pueden
incluir tantos bloques catch como sean necesarios, cada uno de los cuales tratará un
tipo de excepción.
void metodo1(){
...
try {
// Código que puede lanzar las excepciones IOException y MyException
} catch (IOException e1) {// Se ocupa de IOException simplemente dando aviso
System.out.println(e1.getMessage());
} catch (MyException e2) {
// Se ocupa de MyException dando un aviso y finalizando la función
System.out.println(e2.getMessage()); return;
} finally { // Sentencias que se ejecutarán en cualquier caso
...
}
...
} // Fin del metodo1
Existen algunos casos en los cuales el código de un método puede generar una
Exception y no se desea incluir en dicho método la gestión del error. Java permite que
este método pase o relance (throws) la Exception al método desde el que ha sido
llamado, sin incluir en el método los bucles try/catch correspondientes. Esto se
consigue mediante la adición de throws más el nombre de la Exception concreta
después de la lista de argumentos del método. A su vez el método superior deberá
incluir los bloques try/catch o volver a pasar la Exception. De esta forma se puede ir
pasando la Exception de un método a otro hasta llegar al último método del programa,
el método main().
El ejemplo anterior (metodo1) realizaba la gestión de las excepciones dentro del propio
método.
Según lo anterior, si un método llama a otros métodos que pueden lanzar excepciones
(por ejemplo de un package de Java), tiene 2 posibilidades:
Si no hace ninguna de las dos cosas anteriores el compilador da un error, salvo que se
trate de una RuntimeException.
try {
// Código “vigilado” que puede lanzar una excepción de tipo A, B o C
} catch (A a1) {
// Se ocupa de la excepción A
} catch (B b1) {
// Se ocupa de la excepción B
} catch (C c1) {
// Se ocupa de la excepción C
} finally {
// Sentencias que se ejecutarán en cualquier caso
}
Al ser clases como cualquier otra se podrían incluir variables y métodos nuevos. Por
ejemplo:
Se trata de una restricción muy útil ya que como consecuencia de ello el código que
funciona con la clase base podrá trabajar automáticamente con referencias de clases
derivadas, incluyendo el tratamiento de excepciones, concepto fundamental en la
Programación Orientada a Objetos (polimorfismo).
Apoyo bibliográfico:
Steven Holzner, Java2. Anaya Multimedia
Javier García de Jalón, José Ignacio Rodríguez, Iñigo Mingo · Aitor Imaz, Alfonso
Brazález · Alberto Larzabal · Jesús Calleja · Jon García Aprenda Java como si estuviera
en primero, Escuela Superior de Ingenieros Industriales