Un breve resumen del lenguaje Java
1.1. Ordenes
para trabajar con codigo Java desde una maquina Unix . . . . . . . . . . . . . .
1.2. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Declaracion de datos variables y constantes . . . . . . . . . . . . . . . . . . . . . . . .
1.4. Conversiones entre tipos de datos primitivos y cadenas de caracteres . . . . . . . . . . .
1.5. Instrucciones simples y compuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1. Instrucciones simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2. Instrucciones compuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6. Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1. Estructura de una clase Java . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2. Jerarquia de las principales clases predefinidas en la API Java utilizadas en la
asignatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7. Excepciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.
Ordenes
para trabajar con codigo Java desde una maquina Unix
Algunas o rdenes para trabajar con codigo Java:
Para compilar codigo Java:
javac [-classpath camino] [-d carpeta] [-g] [Link]
Para ejecutar un programa java:
java [-classpath camino] nombre clase argumentos
Para ejecutar un applet:
appletviewer url
Para depurar codigo Java:
jdb nombre clase
Para generar documentacion:
javadoc [-classpath camino] [-d carpeta] [Link]
1.2.
Comentarios
En Java se pueden escribir tres tipos de comentarios: los comentarios de una lnea, los comentarios de
varias lneas y los utilizados para generar automaticamente ficheros de documentacion a partir del texto
del comentario:
// Comentarios de una lnea
/ Comentarios de
varias lneas /
/ Comentarios que generan
documentacion automatica /
Los comentarios que generan documentacion pueden incluir etiquetas @ que definen un campo de
informacion determinado. Ejemplo:
/
Clase que gestiona una lista
@author Joaqun
@version 1.0
@see java. practicas . Alumno
/
public class Titulacion {
una lista de alumnos.
/ Alumnos matriculados en la titulacion /
private Tabla alumnos;
/
Incorpora un nuevo alumno a la titulacion
@param [a] Alumno a matricular
@return Numero de alumnos de la titulacion
@throws TitulacionException si el alumno a matricular ya estaba en la titulacion
/
public int matricular (Alumno nuevo) throws TitulacionException {
...
}
}
1.3.
Declaracion de datos variables y constantes
Una declaracion de un dato variable (atributo de una clase, parametro de un metodo o variable local
de un metodo) viene precedida por una declaracion del tipo de dato.
int i , j , k;
private double x, y;
public int [] tabla ;
String mensaje;
int [] datos = new int [100];
private int calcular ( int x, double, y, Alumno[] tabla )
Una declaracion de datos constantes de metodos o de atributos constantes viene precedida por el
modificador final.
final int MAX = 20;
private final int DIMENSION = 1000;
public final double PI = 3.1416;
1.4.
Conversiones entre tipos de datos primitivos y cadenas de caracteres
Es posible una variedad de conversiones entre datos de tipos primitivos y entre datos de tipos
primitivos y cadenas de caracteres. Algunos ejemplos ilustrativos:
int i = Integer . parseInt (12);
double f = [Link](1.15 );
String s1 = new Double(f). toString ();
String s2 = new Integer ( i ). toString ();
String s3 = i + y + f ;
i = ( int ) f ;
f = i;
//
//
//
//
//
//
//
conversion
conversion
conversion
conversion
conversion
conversion
conversion
1.5.
Instrucciones simples y compuestas
1.5.1.
Instrucciones simples
de
de
de
de
de
de
de
cadena caracteres a entero
cadena caracteres a real
real a cadena caracteres
entero a cadena de caracteres
datos numericos a cadena caracteres
real a entero
entero a real
Una instruccion simple acaba en punto y coma.
int i = 0;
double f = 0.0;
resultado += Calculador . operacion3( i , xy);
i++;
[Link] . printf ( %7d %12.3f %n, cuenta, valor);
return new Alumno(665202, Pedro Gomez);
1.5.2.
Instrucciones compuestas
Un bloque de instrucciones se escribe entre llaves. El codigo de bloque se escribe sangrado y alineado
a izquierda:
{
instruccion1
instruccion3
instruccion4
instruccion7
...
; instruccion2 ;
;
; instruccion5 ; instruccion6 ;
;
Instruccion condicional (sin clausulas else if ni clausula else):
if ( condicion ) {
instrucciones ;
}
Instruccion condicional (con clausulas else if pero sin clausula else):
if ( condicion ) {
instrucciones ;
}
else if ( condicion ) {
instrucciones ;
}
else if ( condicion ) {
instrucciones ;
}
else if ( condicion ) {
instrucciones ;
}
Instruccion condicional completa:
if ( condicion ) {
instrucciones ;
}
else if ( condicion ) {
instrucciones ;
}
else if ( condicion ) {
instrucciones ;
}
else if ( condicion ) {
instrucciones ;
}
else {
instrucciones ;
}
Instruccion iterativa while:
while ( condicion ) {
instrucciones ;
}
Instruccion iterativa for:
for ( inicializacion ; concicion ; incremento) {
instrucciones ;
}
1.6.
Clases
1.6.1.
Estructura de una clase Java
Estructura de una clase:
package nombrePackage;
import java . util . Scanner;
import java . io .;
/ Se hace visible esta clase /
/ Se hacen visibles estas clases /
public class NombreClase {
/ Declaracion de atributos
/ Codigo de sus metodos
/
/
Ejemplo de una clase sin metodo main:
package cap1;
/
Los objetos de la clase gestionan la informacion asociada a un alumno universitario
/
public class Alumno {
private int suNip;
private String suNombre;
// numero de identificacion personal (NIP) de este alumno
// nombre y apellidos de este alumno
/
Post : Determina el numero NIP y el nombre de este alumno,asignandoles los valores
definidos por su primer y segundo parametro, respectivamente
/
public Alumno (int unNip, String unNombre) {
suNip = unNip; suNombre = unNombre;
}
/
Post : Devuelve el valor del NIP de este alumno
/
public int nip () {
return suNip;
}
/
Post : Devuelve el nombre de este alumno
/
public String nombre () {
return suNombre;
}
}
Ejemplo de una clase con un metodo main:
/
Esta clase facilita el metodo [main] para escribir un mensaje dirigido a dos alumnos
en el que se les da la bienvenida a la Universidad
/
public class Saludo {
/
Post : Escribe por pantalla un mensaje dando la bienvenida a la Universidad de
Zaragoza a dos alumnos determinados.
/
public static void main ( String [] argumentos) {
String universidad = Universidad de Zaragoza;
/
Crea dos objetos [Alumno] que representan dos alumnos universitarios
/
Alumno alumno1 = new Alumno(604566, Jose Gutierrez Andres),
alumno2 = new Alumno(628699, Ana Isabel Garca Sanchez);
/
Escribe un mensaje de bienvenida a los dos alumnos
/
[Link] . printf (Los alumnos %s y %s son bienvenidos\na la %s %n,
[Link](), [Link](), universidad );
}
}
1.6.2.
Jerarquia de las principales clases predefinidas en la API Java utilizadas en la
asignatura
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
...
...
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
6
...
...
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
...
class [Link]
class [Link]
class [Link]
...
...
...
1.7.
Excepciones
Esquema general para el tratamiento de excepciones:
try {
codigo donde se pueden producir excepciones
}
catch (TipoExcepcion1 nombreExcepcion) {
codigo a ejecutar si se produce una excepcion del tipo TipoExcepcion1
}
catch (TipoExcepcion2 nombreExcepcion) {
codigo a ejecutar si se produce una excepcion del tipo TipoExcepcion1
}
...
finally {
codigo a ejecutar tanto si se produce una excepcion como si no
}
El siguiente esquema muestra la ubicacion de las clases Exception y Error y sus subclases mas
destacadas:
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
...
Dentro de la clase Exception, podemos distinguir dos subclases, RuntimeException y IOException. A
su vez se distinguen subclases de e stas u ltimas segun ilustra el siguiente esquema. Cada una de las clases
y subclases del esquema se asocia a una categora de excepciones.
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
...
Dentro de la clase Error tambien cabe distinguir diferentes subclases. Cada una de ellas se asocia a
una categora de error.
[Link]
[Link]
[Link]
[Link]
...
...
Finalmente se presenta un metodo que lee la informacion de un fichero binario e ilustra como
programar la gestion de las excepciones que puedan presentarse.
public static double totalFactura ( String nombreFichero, int cliente ) {
DataInputStream fVentas = null ;
double total = 0.0;
try {
fVentas =
new DataInputStream (new FileInputStream(nombreFichero));
while (true) {
int nuevoCliente = fVentas . readInt ();
int cantidad = fVentas . readInt ();
double precio = fVentas . readDouble ();
if ( nuevoCliente== cliente ) total += cantidadprecio ;
}
}
catch (EOFException e) {
try { fVentas . close (); } catch (IOException e1) { }
}
catch (IOException e) { }
return total ;
}