Você está na página 1de 138

ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
introduccin a Java
pregunta
introduccin a Java
breve historia

Nace en 1991, como controlador de electrodomsticos


desarrollado por Sun Microsystems.
Se llama inicialmente Oak, por iniciativa de su autor,
James Gosling.
El nombre Java proviene de la variante de caf que
tomaban los desarrolladores de Oak.
Est basado en lenguajes anteriores como C, C++ y
SmallTalk.
Su sintaxis es muy parecida a la de C++
El lema inicial de Java:

Write once, run anywhere


introduccin a Java
breve historia

En 1995, aprovechando el auge de Internet, se catapulta hacia el estrellato con los


applets.
Se lanza el primer kit de desarrollo JDK1.0
Netscape garantiza la compatibilidad de Java con sus navegadores.
En 1998 se mejora y ampla a la versin 1.2, llamada Java2.
En aos sucesivos el lenguaje crece y se ampla
En 2001 se lanza J2EE (Java 2 Enterprise Edition),
orientado a aplicaciones empresariales.
En 2010 Oracle compra Sun Microsystems y absorbe el negocio
Java.
La versin actual de java es la 1.7.
introduccin a Java
caractersticas de Java

Simple
El cdigo es autocontenido y no son necesarios ficheros de cabecera o IDLs
Se han eliminado elementos poco tiles de C++ como macros, herencia
mltiple, operadores de acceso diferentes del punto (.) , etc.
Slo posee 53 palabras reservadas.
Robusto
Se eliminan los causantes de la mayora de errores en C++: los punteros y su
aritmtica.
Se realizan mltiples comprobaciones en tiempo de ejecucin como los
accesos fuera de rango y la corrupcin de memoria.
La gestin de excepciones es mucho ms robusta que en C++.
introduccin a Java
caractersticas de Java

Multiplataforma y portable
Java es interpretado. Genera archivos bytecode que se ejecutan bajo una
mquina virtual. El mismo cdigo sirve para varios entornos.
Actualmente existen intrpretes de Java bajo Windows, Linux, MacOS y
Solaris.
El tamao de los tipos bsicos es fijo e independiente del
compilador y mquina.
Abstrae utilidades dependientes de cada plataforma: GUI
(ventanas, mens), E/S (gestin de ficheros), protocolos
TCP/IP, etc.
introduccin a Java
caractersticas de Java

Gestin automtica de la memoria


No es necesario destruir objetos ya que un mecanismo dentro de la mquina
virtual llamado recolector de basura se encarga de ello de forma automtica.
Seguridad de tipos
Java tiene mecanismos de seguridad para garantizar de forma correcta los
accesos a los tipos de datos para evitar accesos a memoria no correspondiente.
Slo se admiten conversiones entre tipos compatibles.
No se pueden usar variables no inicializadas. El compilador asigna un
valor por defecto a los atributos y vigila la inicializacin de variables locales.
Al acceder a una tabla, se comprueba que el acceso se realiza con los
ndices que se encuentren en el rango de la misma.
introduccin a Java
caractersticas de Java

Orientado a objetos
Se basa en los tres pilares del paradigma de orientacin a objetos:
encapsulacin, herencia y polimorfismo.
Multitarea
Java dispone del uso de hilos, que
permiten la ejecucin de dos
fragmentos de cdigo de forma
concurrente y compartiendo recursos.
Ligero
Las aplicaciones ocupan muy poco espacio de disco.
El intrprete y las bibliotecas bsicas ocupan unos 200 KB.
introduccin a Java
mquina virtual (JVM)

Java es un lenguaje compilado e interpretado.


Un compilador genera ficheros objeto llamado bytecode.
La mquina virtual de Java (Java Virtual Machine o JVM) es el entorno de
ejecucin que interpreta (ejecuta) los bytecode generados por el compilador.
La existencia de una JVM para cada sistema operativo es la caracterstica que
hace de Java un lenguaje multiplataforma.
Tanto el compilador como la JVM son comandos nativos de cada SO:
Para compilar ficheros fuente se usa el comando javac.
Para ejecutar ficheros bytecode se usa el comando java.
introduccin a Java
proceso de compilacin y ejecucin

Ficheros de Compilador Java


cdigo fuente (javac)
(.java)

Ficheros bytecode
(.class)

Lenguaje
mquina JVM (java)
introduccin a Java
tipos de aplicaciones

Aplicaciones Java Pesadas


Aplicaciones convencionales de escritorio
Son autnomas

Applets
Aplicaciones Java que un navegador web descarga de un servidor
Se ejecutan en la mquina cliente con restricciones

Aplicaciones JEE
Programas gestionados por un servidor de aplicaciones y por un servidor web
conjuntamente
Se ejecutan en la mquina servidor

Aplicaciones JME
Aplicaciones para dispositivos mviles y PDA
Se ejecutan en entorno reducido con pocos recursos
introduccin a Java
siglas java

Java Enterprise
JEE Edition

Java Statandard
JSE Edition

Java
JDK Development Kit

Java Runtime
JRE Environment

Java Virtual
JVM Machine
introduccin a Java
primera aplicacin en Java

Una aplicacin en Java es un conjunto de uno o ms ficheros de cdigo fuente


con las instrucciones necesarias para que funcione como se desee.
Como primer contacto con un lenguaje nuevo, nada mejor que el programa Hola,
Mundo!, cuyo objetivo es mostrar por pantalla el mensaje Hola, Mundo!
introduccin a Microsoft .NET
y C#
primera aplicacin en Java

Usar un editor de textos (por ejemplo, Bloc de notas) para escribir el cdigo y
guardarlo como texto plano en un fichero llamado HelloWorld.java.
Para compilarlo basta con abrir una ventana de consola (MS-DOS en Windows),
colocarse en su directorio y escribir:

> javac HelloWorld.java

Tras invocarlo, se obtiene un fichero bytecode llamado HelloWorld.class


Una vez compilado, para ejecutar el programa ser necesario teclear:

> java HelloWorld


ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
sintaxis bsica
identificadores

Como en el resto de lenguajes de programacin, un identificador es un nombre


mediante el cual identificamos un elemento del cdigo (clase, variable, mtodo, etc.)
Es una secuencia alfanumrica (incluidas vocales acentuadas y la ) cuyo primer
carcter no es un nmero.
Se permiten incluir otros caracteres imprimibles (diresis, subrayados, etc.)
exceptuando aquellos que tienen un significado especial dentro del lenguaje (por
ejemplo % y ?). De todas formas, no es recomendable.
Ejemplos vlidos: Arriba, caa, C3P0, , hola, _barco_
Ejemplos no vlidos: 3com, 123, 4D5v, C#, a!b, rt, qwe`t
sintaxis bsica
palabras reservadas

Actualmente Java dispone de 53 palabras reservadas:

abstract default goto package this Aportaciones de:


assert do if private throw lenguage c,
boolean double implements protected throws lenguaje c++,
break else import public transient lenguaje java
byte enum instanceof return true

case extends int short try

catch false interface static void

char final long strictfp volatile Nota: goto y


const se
class finally native super while
mantienen
continue float new switch aunque no se
utilizan.
const for null synchronized
sintaxis bsica
tipos simples

Java define ocho tipos de datos primitivos. No se los considera objetos:


Nmeros enteros:
byte, short, int, long
Nmeros reales (con decimales)
float, double
Caracteres
char
Booleanos (lgicos)
boolean
El tipo String no es un tipo simple, pero
a veces se lo considera como tal.
sintaxis bsica
tipos simples

Rango de valores de los tipos simples:

Tipo Tamao en bytes Rango


byte 1 (8 bits) -126 a +127
short 2 (16 bits) -32.768 a +32.767
int 4 (32 bits) -2.147.483.648 a + 2.147.483.647
- 9.223.372.036.854.775.808 a
long 8 (64 bits)
+9.223.372.036.854.775.807
float 4 (32 bits) 3,40282347e+38
double 8 (64 bits) 1,7976e+308
char 2 (16 bits) Rango de caracteres Unicode
boolean 1 (8 bits) Cierto (true) o falso (false)
sintaxis bsica
literales

Tipo Descripcin Ejemplos


Representan enteros. Pueden preceder de los Decimal 56, +5, -6
smbolos + o para indicar signo. Por defecto se
Enteros Hexadecimal 0x3F29A9
evalan como int. Si se quiere que sea long hay
que aadir el sufijo l al final del literal. Octal 0567, -0436
Representar nmeros con decimales. El separador Decimal 2.4, -4.0, .9
es un punto (.). Por defecto se evalan como
Decimales double. Si se quiere que sea float hay que Cientfico 6.02e28
aadir el sufijo f al final del literal.
Cualquier carcter imprimible. Van cerrados entre Carcter e,\n, 5
Caracteres comillas simples. Algunos caracteres deben ser
usados mediante secuencias de escape. Unicode \u00F6

Booleanos Representan los valores de cierto y falso. true, false

Secuencia de caracteres. Van cerrados entre


Cadenas de Esto es una cadena de
comillas dobles. Si la cadena tiene comillas dobles,
caracteres stas se han de escapar.
caracteres, \Hola\!

Valor especial que se usa como valor de las


Nulos variables objeto no inicializadas.
null
sintaxis bsica
conversiones de tipos

Una conversin o casting es el proceso de transformar un valor de un tipo de


datos en otro tipo. Existen dos variantes de conversin:
Conversin implcita. El casting se realiza de forma automtica. Se da al
convertir un tipo de datos en uno ms amplio
byte short int long float double
char int long float double
Conversin explcita. El programador debe indicar explcitamente el tipo de
datos de destino. Se da al convertir un tipo de datos en uno de menor
capacidad. Al ejecutar se trunca el resultado.
double float long int char short byte
sintaxis bsica
conversiones de tipos

Cuando se realiza una operacin numrica, el operando ms pequeo se convierte


al mayor siguiendo las siguientes reglas:
Si un operando es double, el otro se convierte a double y la expresin se
evala a double.
Si un operando es float, el otro se convierte a float y la expresin se
evala a float.
Si un operando es long, el otro se convierte a long y la expresin se evala a
long.
El resto de casos, ambos se convierten a int y la expresin se evala a int .
sintaxis bsica
conversiones de tipos

byte b = 1; int i = 3; float f = 5.0f;


short s = 2; long l = 4L; double d = 6.0;

i = b; //Correcto f = 7.0; //Incorrecto


b = i; //Incorrecto d = 4.0f; //Correcto
b = (byte)i; //Correcto f = 56; //Correcto
l = s; //Correcto f = (float)8.4; //Correcto
l = (long)s; //Correcto i = 56L; //Incorrecto
b = b + s; //Incorrecto i = (int)4L //Correcto
b = (byte)b + s;//Correcto i = i + d; //Incorrecto
d = i + f; //Correcto i = (double)i+d; //Incorrecto
sintaxis bsica
variables

Una variable se puede ver como un almacn de objetos de un determinado tipo al


cual se le asocia un identificador para referirse a l.
Para declarar una variable basta con indicar su tipo seguido de un identificador
<tipoDatos> <identificador>
int x; char letra; String mensaje; Object obj;
Asimismo podemos inicializar una variable asignndole un valor.
int x = 45;
String mensaje = Hola;
Object obj = new Object();
sintaxis bsica
variables

En funcin de donde se localice una variable, puede ser de tres tipos:


Atributo. Se hallan dentro de la definicin de una clase, es decir, de un objeto.
Son permanentes hasta la destruccin de dicho objeto. Si no se les da un valor,
se inicializan por defecto con los valores de la siguiente tabla:
Enteros 0 Caracteres \0
Decimales 0.0 Strings null
Lgicos false Objetos null

Variable local. Se hallan dentro de un mtodo. Se destruyen al finalizarlo. Las


variables locales deben inicializarse antes de ser usadas. Si no se usan, no es
necesario.
Parmetro. Slo pueden usarse dentro del mtodo donde actan (son como
variables locales de ms).
sintaxis bsica
constantes

Una constante es una variable cuyo valor nunca vara y en consecuencia el


compilador lo conoce de antemano y optimiza.
Las constantes se declaran al igual que las variables pero aadiendo la
palabra final en su declaracin y siempre asignndolas un valor.
final double PI = 3.141596;
No es necesaria la inicializacin de una constante al
declararla. Se puede (y debe) declarar en otro lugar.
Si se trata de un atributo, se debe inicializar en un
constructor.
Si se trata de una variable local, se puede inicializar
ms adelante dentro del mtodo.
sintaxis bsica
operadores

Un operador es un smbolo formado por uno o ms caracteres que permite


realizar una determinada operacin entre uno o ms datos y produce un resultado.
Operadores aritmticos
Unarios: negativo (-) y positivo (+)
Binarios: suma (+), resta (-), producto (*), divisin (/) y mdulo (%)
Operadores relacionales
Igualdad (==), desigualdad (!=), mayor que (>), menor que (<), mayor o igual
que (>=) y menor o igual que (<=).
Operadores lgicos
Unarios: not (!)
Binarios: and (&&) y or (||). Son perezosos (no evalan la condicin cuando
se deduce el resultado de un operando)
sintaxis bsica
operadores

Operadores con cadenas


Se usa (+) para concatenar (unir) cadenas. Se pueden concatenar cadenas
con caracteres.
Ejemplo: Hola + Mundo y Hola Mund + o devuelven Hola
Mundo
Operadores de acceso a objetos
Para acceder a los miembros de un objeto se usa el operador punto (.) entre
el nombre del objeto y el nombre del miembro.
Operadores de manipulacin de bits
And (&), or (|), not (~), xor (^), desplazamiento hacia la izquierda N posiciones
con signo (<<nmero) e dem hacia la derecha (>>nmero) (>>>nmero
desplaza a la derecha sin signo).
sintaxis bsica
operadores

Operadores de asignacin
El operador bsico es (=) que, a parte de asignar, devuelve el valor asignado.
La asignacin es asociativa por la derecha.
Operadores compuestos: realizan una operacin y asignan el resultado.
Existen para la suma (+=), resta (-=), producto (*=), divisin (/=), mdulo (%=),
las operaciones bit a bit de and (&=), or (|=), xor (^=) y los desplazamientos de
bits (<<=, >>= y >>>=)
Operadores incrementales: realizan un incremento (++) o decremento (--)
de una unidad en una variable. Si el operador se coloca antes del nombre de la
variable devuelve el valor de la variable antes de incrementarla; si se hace
despus, se incrementa y devuelve el valor ya incrementado
sintaxis bsica
operadores

Ejemplos de asignacin:

a = 56; //asign. bsica


b = 78 + a; //asign. bsica
c += 23; //asign. compuesta. Equivale a c = c + 23
i++; //Incremento. Equivale a i = i + 1
d = i++; //Asigna e incrementa. Si i vale 3 al
inicio, d vale 3.
d = ++i; //Incrementa y asigna. Si i vale 3 al
inicio, d vale 4
sintaxis bsica
operadores

Operador condicional
Es el nico de Java con tres operandos, cuya sintaxis es:
<condicin> ? <expresin1> : <expresin2>
Se evala <condicin>. Si es cierta se devuelve el resultado de evaluar
<expresin1> y si es falsa, <expresin2>
Ejemplo: max = (a>b)?a:b; pregunta si a es mayor que b y devuelve a en
caso afirmativo y b en caso contrario.
No confundirlo con una sentencia ifelse ya que el operador condicional
siempre devuelve un valor, pero ifelse no (aunque se puede usar de forma
similar).
sintaxis bsica
instrucciones de control de flujo

Sentencia condicional if

if(<condicin>){ if(<condicin1>){
<instrucciones> <instrucciones>
}else { } else if(<condicin2>) {
<instrucciones> <instrucciones>
} }

//N condiciones else if


Ejemplo:

if(a > b){ } else if(<condicinN>){


System.out.Println(A gana); <instrucciones>
} else { } else {
System.out.println(B gana); <instrucciones>
} }
sintaxis bsica
instrucciones de control de flujo

Sentencia condicional switch - case

switch(<expresin>){ Ejemplo:
case <literal1>:
<instrucciones> switch(estado){
break; case 0:
case <literal2>: System.out.println(Estoy triste);
<instrucciones> break;
break; case 1:
//N valores System.out.println(Estoy serio);
case <literalN>: break;
<instrucciones> case 2:
break; System.out.println(Estoy feliz);
default: break;
<instrucciones> default:
} System.out.println(No estoy);
}
sintaxis bsica
instrucciones de control de flujo

Sentencias iterativas while y do - while

while(<condicin>){ do{
<instrucciones> <instrucciones>
} while(<condicin>);

Ejemplo: Ejemplo:

int a = 10; char c = \0;

while(a > 0){ do{


System.out.println(a); c = (char)System.in.read();
a--; }while(c != q);
}
sintaxis bsica
instrucciones de control de flujo

Sentencia iterativas for

for(<declaracin>; for(<tipo> <variable> :


<condicin>;<instruccin>){ <array o coleccin>){
<instrucciones> <instrucciones>
} }

Ejemplo: Ejemplo:

int[] v = {4,7,9,1,5,0}; int[] v = {4,7,9,1,5,0};

for(int i = 0; i < v.length; for(int a:v){


i++){ System.out.println(a);
System.out.println(v[i]); }
}
ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
arrays
concepto y declaracin

Un array o tabla es un conjunto ordenado de objetos del mismo tipo, tamao fijo y
se almacena en posiciones consecutivas de memoria. Se tratan como objetos.
Se declara con la siguiente sintaxis:
<tipoDatos> []<nombreTabla>;
Ejemplo: una tabla que almacenase enteros se declarara as
int []miTabla; o bien int miTabla[];
No obstante, esta tabla no almacena nada ya que su valor es null. Si se desea de
verdad que almacene objetos hay que indicar cul es su tamao (cuntos objetos
podr almacenar), que se hace con la siguiente sintaxis:
<tipoDatos> []<nombreTabla> = new <tipoDatos>[<nmDatos>]
int miTabla[] = new int[50];
arrays
concepto y declaracin

En el ejemplo anterior, todas las posiciones se inicializan al valor por defecto de


cada tipo de datos (0 en el caso de enteros). Si queremos dar un valor a cada
posicin, hemos de usar la siguiente sintaxis:
<tipoDatos> []<nombreTabla> = new <tipoDatos>[]{<valores>}
int []miTabla = new int[]{1,7,3,0};
int miTabla[] = {1,7,3,0}; //Forma simplificada
Las tablas no pueden ser redimensionadas.
Al declarar el tamao de una tabla, se puede usar cualquier expresin avaluada
como entera, no hace falta que sea un valor numrico constante.
int n = 4;
int miTabla[] = new int[n+6];
arrays
reglas de declaracin

Si declaramos un array con los valores de forma simplificada (sin new), slo se
permite la declaracin en una nica instruccin.
Incorrecto: int miArray[]; miArray[] = {1,2,3};
Correcto: int miArray[] = {1,2,3};
Si declaramos un array con new, siempre se ha
de especificar su tamao.
Incorrecto: int miArray[] = new int[];
Correcto: int miArray[] = new int[3];
Si declaramos un array con new y valores no se permite especificar el tamao.
Incorrecto: int miArray[] = new int[3]{1,2,3};
Correcto: int miArray[] = new int[]{1,2,3};
arrays
acceso a elementos

Se usa [<posicinElemento>] detrs del identificador de tabla para acceder al


elemento contenido en esa posicin.
Cuidado! En Java, las tablas se indizan desde 0, es decir, el primer elemento es el
0 y el ltimo el N-1
vec[0] devuelve el primer elemento vec[9], el dcimo elemento y vec[i], el
i-simo.
Hay que ir con precaucin al acceder a los elemento de una tabla. Si se especifica
una posicin superior al nmero de elementos de la tabla se lanza una excepcin
del tipo IndexOutOfBoundsException.
Para saber el tamao de una tabla, basta con consultar el atributo length de sta.
miTabla.length
arrays
arrays multidimensionales

Un array multidimensional es un array cuyos elementos se encuentran


organizados siguiendo una estructura de varias dimensiones. Tambin se puede
interpretar como un array cuyos elementos son arrays.
Se pueden anidar tantos niveles de tablas como se desee, aadiendo
corchetes ([]) por cada nuevo nivel.
No es necesario que cada array tenga el mismo tamao que los dems.
Es posible declarar un array multidimensional dejando sin declarar el tamao
de la ltima dimensin.
arrays
arrays multidimensionales
A = new int[3][4]
Si se crea un array A, es posible
que uno piense que es una matriz
de 3 filas y 4 columnas

Pero en realidad, A es una


referencia a un array de 3 que
a su vez son arrays de enteros
de tamao 4
arrays
arrays multidimensionales
Ejemplos de declaracin y acceso:
int miTabla[][] = new int[2][2];
int miTabla[][] = new int[2][];
int miTabla[][] = new int[][]{{1,2},
{3,4,5}};
int miTabla[][] = {{1,2}, {3,4,5}};
int t2[] = {1,2,3};
int miTabla[][] = {t2, t2};
miTabla[2][6] = miTabla[i+2][3];
ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
orientacin a objetos
concepto de clase y objeto

Un objeto es un agregado de datos (llamados atributos) y funciones (llamadas


mtodos) que permiten manipular dichos datos.
Los programas son conjuntos de objetos que interactan los unos con los otros.
Una clase es la definicin de las caractersticas concretas de una determinada
tipologa de objetos. Es decir, cules son los datos y mtodos de los que van a
disponer todos los objetos de ese tipo.
Hablar de clases equivale a hablar de tipos de datos.
Al ser Java un lenguaje orientado a objetos puro, siempre se trabaja con
objetos y clases.
A un objeto concreto que pertenece a una clase se le suele llamar instancia.
orientacin a objetos
sintaxis de definicin

class <nombreClase> {
<atributo/mtodo 1>
<atributo/mtodo 2>
<>
<atributo/mtodo N>
}
Ejemplo:
class MiClase {
int a;
double b;
public void f(int i){
a = i;
}
//ms atributos y mtodos
}
orientacin a objetos
atributos

Un atributo es un dato comn a todos los objetos de una determinada clase. Se


deben definir dentro del cuerpo de la clase y tienen la siguiente sintaxis:
<tipoAtributo> <identificadorAtributo>
<tipoAtributo> es el tipo de datos del atributo. Puede ser un tipo simple o un
objeto de otra clase cualquiera.
<identificadorAtributo> es un identificador vlido.
Ejemplo:
class Persona {
String nombre;
int edad;
String nif;
}
orientacin a objetos
atributos

Para acceder a un atributo se utiliza la siguiente sintaxis:


<identificadorObjeto>.<identificadorAtributo>
Por ejemplo, para acceder al atributo edad de un objeto Persona llamado p y
cambiar su valor por 20 sera:
p.edad = 20;
Si estamos trabajando en el contexto de una clase el acceso a sus atributos es
directo, es decir, slo se usa <identificadorAtributo>
En realidad <identificadorObjeto> no tiene por qu ser necesariamente el
identificador de un objeto. Una expresin que devuelva un referencia no nula de un
objeto tambin es vlida.
Si accedemos a un atributo de un objeto nulo, se lanza una excepcin de tipo
NullPointerException.
orientacin a objetos
atributos

Se puede inicializar un atributo en el momento de su declaracin a travs de una


asignacin:
int valor = 9;
Si no se da un valor, el compilador asigna automticamente un valor por defecto al
atributo. Esto es debido a que Java no permite dejar atributos sin inicializar por
motivos de seguridad.
Valores por defecto:
Enteros 0 Caracteres \0
Decimales 0.0 Strings null
Lgicos false Objetos null
orientacin a objetos
mtodos

Un mtodo es un conjunto de instrucciones encapsuladas a las que se asocia un


nombre. Se deben definir dentro de la clase y tienen la siguiente sintaxis:
<tipoDevuelto> <identificadorMtodo> ([<parmetros>]) {
<instrucciones>
}
Dentro de un mtodo es posible acceder con total libertad a los atributos de la
clase donde est definido el mtodo.
Los mtodos pueden devolver un objeto, un dato de tipo simple o un array
como resultado de las instrucciones ejecutadas.
El tipo de dato a devolver ha de ser el mismo que el indicado en
<tipoDevuelto>. Si no se ha de devolver nada, se indica void, pero si se
devuelve algo es obligatorio incluir la sentencia return al finalizar el mtodo.
orientacin a objetos
mtodos

Opcionalmente pueden recibir un listado de objetos, <parmetros>, a los que


podr acceder durante la ejecucin de las instrucciones. Al declarar un parmetro se
ha de indicar el tipo y un nombre identificador.
Los parmetros se consideran variables locales de un mtodo y se borran al
terminar ste.
Los parmetros pueden ser de tipos simples, clases y arrays.
Ejemplo. Bsqueda lineal en un array de int:
boolean buscar (int vec[], int valor){
for(int i=0; i < vec.length; i++){
if(vec[i] == valor){
return true; //Abandona el bucle y el mtodo
} }
return false; //Pueden existir mltiples return por mtodo
}
orientacin a objetos
paso de parmetros en mtodos

El mecanismo de paso de parmetros en Java es simple:


Si el parmetro es un tipo simple se pasa por valor.
Se hace una copia del valor del parmetro. Si se modifica ese valor
dentro del mtodo, el valor origen no se ve afectado
Si el parmetro es un objeto o array se pasa por referencia.
Se pasa una referencia (puntero) de la zona de memoria donde estn los
datos. Si se modifica dentro del mtodo los cambios se ven reflejados en el
resto de referencias que apuntan a la misma zona de memoria.
Aunque los datos asociados a una referencia se pueden cambiar, no se
puede cambiar la referencia en s (el puntero se pasa por valor).
orientacin a objetos
mtodos con nmero indefinido de parmetros

Java permite mtodos que puedan tomar un nmero indeterminado de


parmetros, pero para ello es necesario cumplir ciertos requisitos:
Ha de ser el ltimo de la lista de parmetros del mtodo.
Se le debe aadir puntos suspensivos () despus de definir su tipo.
Al llamar al mtodo, los tipos de los parmetros han de ser del mismo tipo que
el definido. Si se desea un comportamiento genrico, basta con declarar el
parmetro de tipo Object (polimorfismo).
Dentro del mtodo, este parmetro se comporta como un array del tipo
especificado.
orientacin a objetos
mtodos con nmero indefinido de parmetros

public void f(char c, int... ps){


ps[3] = 8; //ps es un array int[]!
}
f(a); //Ok! Se pueden pasar 0 parm. indefinidos
f(b,1,4,5); //Ok!
f(c,3,Hola); //No! Hola es String y se espera int
f(d, new int[]{1,9,6}); //Ok!
Los mtodos con parmetros indefinidos tienen la prioridad ms baja cuando existe
sobrecarga de mtodos.
public void g(int x, int y){//}
public void g(int... ps){//}
g(2,3); //el primer mtodo tiene prioridad sobre el
//segundo
orientacin a objetos
atributos y mtodos estticos

Un atributo esttico de una determinada clase es un atributo cuyo valor es el


mismo para todos los objetos de la clase, es decir, compartido para cualquier objeto
que pertenezca a esta clase.
En consecuencia, estos atributos no estn asociados a un objeto concreto sino a
la clase en s misma.
Se declaran como cualquier otro atributo pero aadiendo la palabra static al
inicio:
static int numero;
Los accesos a atributos estticos son un poco diferentes respecto de los normales
ya que en vez especificar el objeto hay que especificar la clase del objeto:
int a = MiClase.numero;
orientacin a objetos
atributos y mtodos estticos

El concepto y uso de mtodos estticos es anlogo al de los atributos: son


operaciones a nivel de clase.
Se declaran anteponiendo la palabra static antes del nombre del mtodo.
Como son operaciones de clase, no pueden usarse atributos ni mtodos no
estticos ya que estos corresponden a un objeto concreto.
Dentro de un mtodo, todo miembro esttico puede ser escrito directamente, sin
anteponer el nombre de la clase.
class C {
static int a;
int b;
static void f(){
a = 6; //S!
b = 4; //No! Estamos accediendo a un atributo no esttico
}
}
orientacin a objetos
referencias y constructores

Al declarar una variable o atributo de una clase concreta no se reserva memoria


para almacenar sus datos.
Esa variable en realidad es una referencia (un puntero encubierto) a una
zona de memoria dinmica.
De esta manera en nuestro programa podemos tener dos variables que
apunten a una misma zona de memoria.
Para reservar memoria, es decir, crear el objeto, es necesario invocar un
constructor usando la partcula new.
<nombreClase> <identfObj> = new <nombreClase>([<params>]);
Ejemplo sobre una clase de nombre A:
A miObjeto = new A();
orientacin a objetos
concepto de constructor

Un constructor de una clase es un mtodo especial que contiene las instrucciones


a ejecutar cada vez que se cree un nuevo objeto de ese tipo.
Se usan para tareas como inicializacin de atributos o se requieren operaciones
ms complejas como aperturas de ficheros, acceso a redes, etc.
Siempre se ejecutan despus de haberse inicializado todos los atributos (de forma
explcita o implcita a travs de valores por defecto).
Tienen un gran diferencia respecto el resto de
mtodos: no se heredan.
Los constructores no devuelven el objeto en s
mismo, sino una referencia a l.
orientacin a objetos
sintaxis de constructor

Los constructores tienen una sintaxis muy parecida a los mtodos, salvo que el
nombre ha de ser el mismo que el de la clase y nunca tienen valor de retorno (ni
void):
<nombreTipo> ([<parmetros>]) {
<instrucciones>
}
Ejemplo:
Persona(String nombre){
System.out.println(nombre);
}
Al constructor se le llama en el momento de creacin del objeto usando la directiva
new:
Persona p = new Persona(David);
orientacin a objetos
constructor por defecto

Todas las clases deben tener constructor.


En caso que el programador no defina uno, el compilador crea uno por defecto con
la siguiente signatura:
public <nombreClase>(){super();}
Si el programador define un constructor, el compilador ignora aadir el constructor
por defecto, por lo que se recomienda aadirlo manualmente en este caso.
Atencin! Mucho cuidado con los temas de herencia dentro de los constructores.
Dejar que una subclase tenga constructor por defecto y su clase base no, dara un
error de compilacin.
orientacin a objetos
sobrecarga y llamadas entre constructores

Se pueden definir varios constructores para una clase siempre y cuando difieran
en nmero de parmetros y/o en tipos (por ejemplo no podemos tener dos
constructores cuyos parmetros sean int e int respectivamente).
Tambin se pueden realizar llamadas desde un constructor a otros constructores
usando la partcula this() como primera instruccin (usar esta instruccin en otro
orden genera un error de compilacin):
class A {
A (){
this(0.0,0.0); //llamamos al segundo constructor
}

A (int altura, double peso){}


}
orientacin a objetos
inicializador esttico

El inicializador esttico es una especie de constructor que se usa en el mbito


esttico. Su definicin es el modificador static seguido de llaves:
static {
<instrucciones>
}

Estos constructores se llaman cuando la JVM carga


por primera vez en memoria la informacin de la clase.
Como pasa con los mtodos estticos, slo se
pueden modificar atributos e invocar mtodos
estticos dentro del inicializador esttico.
orientacin a objetos
uso de this

Dentro de cualquier mtodo de un objeto siempre es posible hacer referencia al


propio objeto usando la referencia this.
Su uso principal es el de resolver ambigedades cuando un parmetro u otro
elemento tiene el mismo nombre que un atributo (sobre todo en constructores).
class C {
int a;
//Constructor de C. Atributo y parmetro se llaman igual.
C(int a){
a = a; //No! Ambigedad entre atributo y parmetro
this.a = a; //Ok!
}
}
orientacin a objetos
destruccin de objetos

Cuando deseamos una nueva instancia de un objeto hemos de hacerlo de forma


explcita a travs de new. No sucede lo contrario al destruirlo.
En Java el programador no se ha de preocupar de liberar la memoria dinmica que
va necesitando durante la ejecucin de su programa. Ya se encarga de ello el
Garbagge Collector (o recolector de basuras).
Se trata de un hilo de la mquina virtual que peridicamente revisa qu zonas
de memoria se han quedado sin referencia (sin ningn puntero que apunte a
ellas) y las libera.
El programador puede invocar System.gc() para sugerir a la JVM que active
el recolector.
No obstante, cualquier clase puede definir un mtodo finalize(). Se trata del
ltimo mtodo que se invoca antes de que el recolector de basura destruya el objeto.
orientacin a objetos
ejemplo

//Definimos una clase que modele vectores de dos dimensiones


class Vector2D{
//Definimos los atributos: dos coordenadas (x,y)
double x;
double y;

//Definimos un constructor de 2 parmetros


Vector2D(double x, double y){
//Usamos this para deshacer ambigedades
this.x = x;
this.y = y;
}
//Definimos otro constructor sin parmetros
Vector2D(){
//Llamamos al otro constructor con this
this(0.0,0.0);
}
orientacin a objetos
ejemplo

//Definimos un mtodo que calcula la suma de dos vectores.


//El mtodo suma el objeto actual (this) con el objeto
//pasado como parmetro
Vector2D suma(Vector2D vec){
double xAux = x + vec.x;
double yAux = y + vec.y;
Vector2D vecSuma = new Vector2D(xAux, yAux);
return vecSuma;
}

//Definimos un mtodo que calcula el producto escalar


//de dos vectores: this y el parmetro
double prodEscalar(Vector2D vec){
return x * vec.x + y * vec.y;
}
}
ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
encapsulacin, herencia y
polimorfismo
los tres pilares
El paradigma de la programacin orientada a objetos se sustenta en tres
conceptos:
encapsulacin, herencia y
polimorfismo
encapsulacin

Se entiende por encapsulacin al


mecanismo que permite determinar qu
elementos dentro de una clase pueden
utilizarse desde otro lugar y cules no,
es decir, su visibilidad.
La encapsulacin permite esconder
todos los detalles relativos a la
implementacin interna y slo dejar visibles aqullos que se pueden usar con
seguridad.
Se evitan cometer errores por manipular indebidamente partes de cdigo que no
se deberan tocar.
encapsulacin, herencia y
polimorfismo
modificadores
La encapsulacin se consigue aadiendo modificadores de acceso en las
declaraciones de los atributos, mtodos y clases.
Un modificador es una palabra reservada que se coloca delante de la declaracin
del elemtento al que se desea limitar el acceso.
Existen cuatro modificadores:
public: se puede acceder al elemento desde cualquier parte.
private: el elemento slo se puede acceder desde el cdigo de la clase a la
cual pertenece.
protected: el elemento se puede acceder desde el cdigo de la clase a la
cual pertenece desde todas sus subclases y desde el mismo package.
default: el elemento se puede acceder desde cualquier clase perteneciente
al mismo paquete. Es el valor por defecto.
encapsulacin, herencia y
polimorfismo
modificadores

Contexto private default protected public

Misma clase
Subclase del mismo
package
Clase del mismo
package
Subclase de otro
package
Clase de otro
package
encapsulacin, herencia y
polimorfismo
herencia
La herencia, es un mecanismo que permite
definir nuevas clases a partir de clases ya
definidas de forma que la nueva clase (llamada
tambin clase hija) adquiera todos los mtodos
y atributos de cuya clase parte (clase padre).
Para indicar que una clase hereda de otra se

debe hacer en la declaracin de la propia clase aadiendo la palabra extends:


class <nombreClaseHija> extends <nombreClasePadre> {
//
}
Los atributos y mtodos que se pueden heredar de una clase son aquellos
declarados como public o protected.
encapsulacin, herencia y
polimorfismo
herencia
N Ruedas
N Pasajeros
Marca

Tipo de motor
N puertas N marchas Cilindrada
CV Con luz?

Una clase puede heredar de otra si podemos


Piloto establecer una relacin de tipo es-un:
Escudera Coche es un vehculo
Vehculo no es un Frmula 1 (puede serlo, pero
no tiene por qu).
encapsulacin, herencia y
polimorfismo
herencia
public class Vehiculo{
protected int numRuedas;
protected String marca;

public void arrancar(){


System.out.println(Arrancando vehculo de marca + marca);
}
}

public class Coche extends Vehiculo {


private String tipoMotor;

public Coche(String marca, String tipoMotor){


this.marca = marca; //Se hereda el atributo marca
numRuedas = 4: //Se hereda el atributo numRuedas
arrancar(); //El mtodo arrancar() tambin se hereda y no es
//necesario volverlo a reescribir.
}
}
encapsulacin, herencia y
polimorfismo
herencia e inferencia de tipos
class A {}
class B extends A {}
class C extends B {}
class D extends B {}
La herencia nos permite asignar objetos de clases ms particulares a referencias
ms genricas:
A a = new B(); B b = new D(); A a = new C();
El recproco no es cierto y genera errores de compilacin
D d = new A(); //Un objeto A no tiene por qu ser D
Para conseguirlo es necesario hacer un casting. Cuidado! Si se hace un casting a
una clase que no corresponde con la real se lanza una ClassCastException.
A a = new D(); D d = (D)a; //Correcto! a es un D
A a = new A(); C c = (C)a; //Error! ClassCastException
A a = new C(); B b = (B)a; //Correcto a es un B pq es un C
encapsulacin, herencia y
polimorfismo
herencia y constructores
Hay dos tipos de mtodos que nunca se heredan: constructores y mtodos
estticos.
Aunque los constructores no se heredan se pueden invocar mediante super.
La palabra reservada super es una referencia al objeto como this pero con
el comportamiento de la clase padre.
public class A{ public class B extends A{
private int x; private int y;
public A(int unX){ public B(int unX, int unY){
x = unX; super(unX);
} y = unY;
} } }
La instruccin de invocacin al constructor padre debe ser la primera del
constructor. De otra manera se genera un error de compilacin.
encapsulacin, herencia y
polimorfismo
polimorfismo

El polimorfismo es la capacidad de definir


clases diferentes que tienen mtodos o atributos
denominados de forma idntica, pero que se
comportan de manera distinta.
Existen dos tipos de polimorfismo:
Esttico. Se resuelve en tiempo de
compilacin. Es el mecanismo de la
sobrecarga de mtodos.
Dinmico. Se resuelve el tiempo de ejecucin. Es el polimorfismo en s
mismo. Es el mecanismo de la sobrescritura de mtodos
encapsulacin, herencia y
polimorfismo
polimorfismo: sobrecarga de mtodos
Cuando dos mtodos se llaman igual pero difieren del nmero de parmetros o del
tipo de estos decimos que se produce sobrecarga de mtodo.
public int raiz(int x){ return (int)Math.sqrt(x); }
public double raiz(double x){ return Math.sqrt(x); }
raiz(4); //Se ejecuta el 1r mtodo pq el parmetro es int
raiz(8.5); //Se ejecuta el 2 mtodo pq el parm. es double
Se decide en tiempo de compilacin la versin exacta a ejecutar.
El compilador sabe de antemano el nmero de parmetros y su tipo.
Cuidado! El valor de retorno y el identificador de los parmetros no cuentan a la
hora de la sobrecarga.
public int raiz(int x){}
public double raiz(int x){} //Error!
public int raiz(int otroNumero){} //Error!
encapsulacin, herencia y
polimorfismo
polimorfismo: sobrescritura de mtodos
A veces es necesario que una clase hija disponga de un mtodo de la clase padre
pero por varias circunstancias, ste debe realizar instrucciones distintas respecto al
mtodo del padre.
Este proceso se llama sobrescritura de mtodos y va muy ligado al polimorfismo
dinmico.
La sobrescritura de mtodos es la base de uno de los conceptos ms potentes
de la OO: la seleccin de mtodos dinmica. Mediante este mecanismo la
llamada a una funcin sobrescrita se resuelve en tiempo de ejecucin y no en
tiempo de compilacin.
La JVM determina qu versin de ese mtodo se debe ejecutar en funcin del
tipo de objeto referido cuando se produce la llamada
encapsulacin, herencia y
polimorfismo
polimorfismo: sobrescritura de mtodos
Ejemplo. Supongamos que tenemos Agentes y Agentes Senior. Los agentes
reciben un 3% de comisin de sus ventas y los Senior reciben un 5% de comisin
por ventas y 1.000 si superan un objetivo.
public class Agente{
protected double ventas;
public double comision(){
return ventas * 0.03;
} }
public class AgenteSenior extends Agente {
private double objetivo;
//Sobreescribimos el mtodo comision()
public double comision(){
if(ventas >= objetivo)
return ventas * 0.05 + 1000.0;
else return ventas * 0.05;
} }
encapsulacin, herencia y
polimorfismo
polimorfismo: funcionamiento
El polimorfismo nos permite dentro de una jerarqua que distintas subclases
respondan a un mismo mtodo de formas diferentes.
Las instancias se tratan como objetos de la clase genrica pero al invocar el
mtodo en tiempo de ejecucin se decide qu versin del mtodo ejecutar .
PiezaAjedrez []piezas = {
new Peon(), new Torre(),
new Caballo(), new Alfil };
for(PiezaAjedrez pz : piezas){
pz.mover();
//En funcin de tipo de que se
//trate, la pieza se mover de una
//forma u otra. Se decide en
//tiempo de ejecucin qu mtodo
//invocar.
}
encapsulacin, herencia y
polimorfismo
polimorfismo: sobrescritura de mtodos
Ejemplo. Recuperemos el ejemplo anterior de los Agentes y Agentes Senior.
Suponemos que ambos tienen constructores que inicializan parmetros.
public class AgenteMain{
public static void main(String args){
Agente a1 = new Agente(3000.0);
Agente a2 = new AgenteSenior(6000.0, 5000.0);
Agente a3 = new Agente(2000.0);
Agente a4 = new AgenteSenior(4000.0, 6000.0);
Agente a5 = new Agente(9000.0);
Agente agentes[] = new Agente[]{a1,a2,a3,a4,a5};
double sumaTotal = 0.0;
for(int i=0; i<agentes.length; i++){
sumaTotal += agentes[i].comision();
}
System.out.println(Total de comisiones: + sumaTotal);
}
}
encapsulacin, herencia y
polimorfismo
clases y mtodos abstractos

En algunos casos, es til declarar clases


que el programador nunca instanciar. Tales
clases se llaman clases abstractas.
Estas clases nicamente se usan como
clases base en la jerarqua de herencia
y no se instancian porque son
incompletas deliberadamente.
Su propsito es suministrar una clase como base de la cual otras puedan
heredar, dejando que cada clase derivada complete los detalles necesarios.
Una clase de este tipo determina la naturaleza de los mtodos que las
subclases deben implementar.
encapsulacin, herencia y
polimorfismo
clases y mtodos abstractos

Una clase se declara abstracta mediante la palabra clave abstract.


Pueden definir uno o ms mtodos abstractos. Los mtodos abstractos se
declaran con la misma palabra clave y nunca tienen cuerpo.
Es obligatorio que los redefina una clase concreta.
public abstract class A {
public abstract void f(); //f es abstracto: no tiene cuerpo
}
public abstract class B extends A {
public void g(){}
}
public class C extends B {
public void f(){} //aqu f s tiene cuerpo y debe tenerlo
}
encapsulacin, herencia y
polimorfismo
clases y mtodos abstractos

Las clases abstractas pueden tener varios niveles de jerarqua, es decir, una
clase abstracta puede heredar otra clase abstracta.
Los mtodos abstractos no tienen implementacin (cuerpo).
Cada clase que herede de una clase abstracta, deber suministrar el cdigo de
los mtodos abstractos o sino declararse tambin abstracta.
No sobrescribir un mtodo abstracto heredado dentro de una clase concreta
provoca un error de compilacin ya que carece de cuerpo.
Si una clase tiene un mtodo abstracto, la clase debe ser definida como abstracta
(si no se hace, se genera un error de compilacin).
El recproco no tiene por qu ser cierto, es decir, una clase abstracta puede
carecer de mtodos abstractos.
encapsulacin, herencia y
polimorfismo
clases y mtodos finales

Una clase se declara como final si no se desea que sta tenga subclases.
Se ha de aadir la palabra reservada final en la declaracin de la clase para
hacerla final.
public final class FinalA {}
De forma anloga un mtodo se declara como final si no se desea que alguna de
sus subclases lo sobrescriba.
Se indica aadiendo la palabra final en la declaracin del mtodo.
public final void f(int x){}
Esto no implica que las subclases que hereden de la clase que contiene el
mtodo final dejen de heredarlo.
Por definicin una clase o un mtodo final nunca puede ser abstracto.
encapsulacin, herencia y
polimorfismo
concepto de interfaz
Una interfaz (o interface) es la definicin de un conjunto de mtodos u otros
miembros para los que no se da una implementacin.
Su sintaxis es casi similar a la de una clase:
<modificadores> interface <nombre> extends <interfaces base> {
<atributos o mtodos>
}
Las interfaces se usan para definir un protocolo de comportamiento comn que
puede ser implementado por cualquier clase sin relacin directa con otras.
Una interfaz equivale a una clase abstracta cuyos mtodos son todos abstractos y
deben ser implementados en sus subclases.
La diferencia entre definir una interfaz y una clase abstracta con mtodos
abstractos radica en que las interfaces permiten herencia mltiple.
encapsulacin, herencia y
polimorfismo
elementos de una interfaz

La visibilidad de atributos y mtodos ha de ser siempre pblica (public).


Implcitamente, los mtodos se declaran como abstract. Por lo tanto el resto de
modificadores no se permiten (tampoco static).
Al ser abstractos, los mtodos no tienen cuerpo.
Una interfaz tambin puede contener atributos, pero estos han de ser static y
final (constantes). Aunque sean estticos, estos atributos se heredan.
public interface A {
int x = 10; //Atributo pblico, esttico y final
void f(int x); //Mtodo pblico y abstracto
}
encapsulacin, herencia y
polimorfismo
herencia de interfaces

Cada interfaz puede heredar de varias interfaces (que se indican despus de


extends separadas entre comas) pero nunca de clases.
Las clases tambin pueden heredar de varias interfaces a la vez de su clase padre.
Cuando una clase hereda de una interfaz se dice que implementa esa interfaz.
Se indica en la definicin de la clase con la palabra reservada implements.
public class B extends A implements IFace1, Iface2 {}
implements va siempre despes de extends.
Una clase que implementa una interfaz ha de
definir todos los mtodos declarados en las
interfaces y declararlos como pblicos.
encapsulacin, herencia y
polimorfismo
herencia de interfaces
public interface A {
int a(); //No lleva public ni abstract (implcitos)
}

public interface B {
int b();
}

public class C implements A, B {


//Implem. de A. Debe llevar public
public int a(){
return 3;
}
//Implem. De B. Puede llevar abstract.
public int b(){
return 8;
}
}
encapsulacin, herencia y
polimorfismo
acceso a elementos de interfaz
Se puede acceder a los mtodos y atributos de una interfaz implementados en una
clase de la misma manera que accedemos a los elementos propios de la clase.
Retomando el ejemplo anterior:
C miC = new C();
int k = miC.a();
Tambin es posible definir variables de tipo interfaz. Aunque no existen
constructores, se pueden inicializar a travs del polimorfismo.
B miB = new C();//Permitido porque C hereda de B
int k = miB.b();
A travs de estas variables slo se pueden acceder a los miembros definidos en la
interfaz, no aquellos otros definidos en la clase.
ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
excepciones
pregunta
excepciones
concepto

Una excepcin es un suceso anmalo que ocurre durante la ejecucin de un


programa e interrumpe el flujo normal de instrucciones.
Las posibles causas del lanzamiento de una excepcin incluyen desde fallos de
hardware (desbordamiento, divisiones por 0, etc.) hasta errores de programacin
(acceso fuera de rangos de una tabla, fallo de conexiones a bases de datos, etc.),
siendo estos ltimos las principales.
La gestin de excepciones es el mecanismo que se usa y se recomienda en Java
para el control de errores.
excepciones
ventajas

El mecanismo clsico de gestin de errores consiste en que cada fragmento de


cdigo susceptible de error genere un cdigo que debe tratar despus el
programador a travs de sentencias if else.
Las excepciones ofrecen usa serie de ventajas respecto al mecanismo anterior.
Claridad. El control de excepciones separa el cdigo normal del cdigo de
control de errores en dos partes bien diferenciadas para separar ambas lgicas
y hacer el programa menos lioso.
Ms informacin. Las excepciones permiten especificar mensajes para
indicar las causas del error y hacer ms trazable el error.
Tratamiento asegurado. Se garantiza que en caso de error, la excepcin ser
tratada y de no serlo, se abortar la ejecucin del programa.
excepciones
clasificacin

La clase padre de todos los objetos que gestionan errores es


java.lang.Throwable. Existen tres grandes grupos de excepciones que heredan
de Throwable:
Errores (jerarqua Error). Representan errores graves de sistema, por
ejemplo, cuando no hay suficiente memoria para la JVM. Su uso se reserva para
uso interno de Java y las aplicaciones no deberan lanzar errores.
Excepciones unchecked (jerarqua RuntimeException). Son excepciones
que la JVM lanza de forma automtica como por ejemplo acceder a una
referencia nula o a una posicin de un array superior a su tamao. No es
necesario su tratamiento ya que pueden evitarse.
Excepciones checked (el resto). Son la inmensa mayora de excepciones. El
programador tiene que gestionar su tratamiento.
excepciones
clasificacin

Throwable
Error Exception
OutOfMemoryError
Excepciones
StackOverflowError Excepciones unchecked
AWTError checked

IOException ArithmeticException
SQLException NullPointerException
ClassNotFoundException OutOfBoundsException
Excepciones Personalizadas ClassCastException
excepciones
captura y tratamiento de excepciones

El control de excepciones se estructura en tres bloques:


Bloque try. Incluye las instrucciones normales de cdigo. Si se detecta el
lanzamiento de una excepcin se interrumpe el flujo de ejecucin y se pasa a
ejecutar el bloque catch.
Bloque catch. Incluye las instrucciones que tratarn la excepcin generada.
Un bloque catch dispone siempre de una referencia a la excepcin generada
para poder acceder a informacin extra sobre la causa y la trazabilidad.
Bloque finally. Incluye instrucciones que se ejecutarn siempre, se haya
producido una excepcin o no. Es decir, si el bloque try no lanza excepcin
alguna se pasa a ejecutar finally y si se lanza, despus del catch tambin
se ejecutar finally. Se usa principalmente para liberar recursos o destruir
objetos.
excepciones
captura y tratamiento de excepciones

public void division(int num, int den){


System.out.println(Inicio de programa);
//try bloque de instrucciones normales
try{
//Instruccin propensa a lanzar excepciones
int result = num / den;
System.out.println(El resultado es + result);
//catch bloque de tratamiento de errores
}catch (ArithmeticException ex) {
System.out.println(Error! Se ha intentado dividir por 0);
//finally bloque que siempre se ejecuta indistintamente
//si haya error o no
}finally{
System.out.println(Fin de programa);
}
}
excepciones
tratamiento de mltiples excepciones

Java ofrece la posibilidad de capturar mltiples


excepciones en un nico bloque try.
Para ello basta con definir varios bloques catch, uno por
cada excepcin que se desee tratar.
Los bloques catch se ejecutan en secuencia, de forma
que es importante definir su orden, sobre todo cuando
existe una jerarqua de excepciones ya que por
polimorfismo una excepcin padre puede capturar excepciones hijas.
Conviene siempre capturar primero las excepciones ms concretas y dejar como
ltimas las ms genricas (siendo la ms bsica, java.lang.Exception, la
ltima)
excepciones
tratamiento de mltiples excepciones

public void acceso(int[] vec, int index){


try {
System.out.println(El valor es + vec[index]);
//Primera fuente de error: vec es nulo
} catch (NullPointerException npe){
System.out.println(Error 1! + npe.getMessage());
//Segunda fuente de error: index >= vec.length
} catch (ArrayIndexOutOfBoundsException obe){
System.out.println(Error 2! + obe.getMessage());
}
}
excepciones
propagacin de excepciones

Si una excepcin no se captura dentro de un mtodo decimos que se propaga


hacia niveles superiores. Es decir, se delega la responsabilidad de captura al mtodo
que llam al mtodo que gener excepcin, y as sucesivamente.
Si una excepcin no se captura en ningn mtodo a travs de un bloque try
catch se finaliza el hilo de ejecucin y si este hilo es el principal, entonces se
aborta el programa.
Si sabemos que las instrucciones de un mtodo son susceptibles de lanzar
excepciones pero no queremos tratarlas se debe explicitar en la definicin del
mtodo cules son las excepciones que va a lanzar a travs de la palabra throws.
Por su propia naturaleza no es necesario explicitar las excepciones unchecked
Cuidado! Si un mtodo lanza excepciones y se redefine en una subclase,
ste ha de lanzar las misma excepciones que el mtodo original.
excepciones
lanzamiento de excepciones

A parte de capturar excepciones, el lenguaje permite definir momentos en los


cuales lanzar una excepcin.
Para lanzar una excepcin se usa la palabra throw seguida de una expresin que
devuelta una referencia a una excepcin.
throw <expresionExcepcin>
Resulta conveniente cuando se desea propagar una excepcin para que en otra
regin de cdigo (o clase) sea capturada.
public double raizCuadrada(double num)
throws ArithmeticException{
if(num < 0.0){
throw new ArithmeticException(Argumento negativo);
}
return Math.sqrt(num);
}
excepciones
excepciones definidas por el usuario

La API de Java incluye una coleccin extensa de excepciones que resuelven la


mayora de errores comunes cuando uno programa.
No obstante hay veces en que se desea una excepcin personalizada dentro de
un programa para tratar nuevas casusticas de situaciones extraas.
Java permite la creacin de estas excepciones heredando de la clase base de
excepciones java.lang.Exception.
Se recomienda que el nombre de clase de la excepcin indique la causa de su
lanzamiento y que termine con el sufijo Exception para su rpida identificacin.
Se deberan declarar dos constructores: el constructor vaco y otro con un
parmetro String que simbolice el mensaje de error.
excepciones
excepciones definidas por el usuario
//Excepcin personalizada.
public class SaldoNegativoException extends Exception{
//Constructor vaco
public SaldoNegativoException(){super();}
//Constructor con mensaje de error
public SaldoNegativoException(String mensajeError){
super(mensajeError);
}
}
public class CuentaBancaria {
private double saldo;
public CuentaBancaria(double sld){ saldo = sld; }
//Mtodo que lanza nuestra excepcin personalizada
public void sacarDinero(double cantidad)
throws SaldoNegativoException{
if(cantidad > saldo)
//Lanzamiento de la excepcin
throw new SaldoNegativoException(Fondos insuficientes);
saldo -= cantidad;
}
}
excepciones
excepciones definidas por el usuario

public class CuentaBancariaMain{


public static void main(String args){
try{
CuentaBancaria cb = new CuentaBancaria(1000.0);
//Instruccin que no genera error
cb.sacarDinero(500.0);
//Instruccin que genera una excepcin
cb.sacarDinero(1200.0);
} catch (SaldoNegativoException sne){
//Mostramos el mensaje definido en
//el constructor de la excepcin
System.out.println(sne.getMessage());
//Imprimimos la traza por pantalla
sne.printStackTrace();
}
}
}
ndice

1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
colecciones y utilidades
pregunta
colecciones y utilidades
definicin de coleccin

Una coleccin es un objeto que agrupa mltiples objetos como una unidad que se
usan para almacenar, obtener y manipular datos agregados.
Java nos da un marco de trabajo unificado para representar y manipular las
colecciones conocido como Java Collection Framework o JCF. Consta de tres
componentes:
Interfaces. Tipos abstractos de datos que representan las colecciones y que
abstraen los detalles de su representacin interna. Forman una jerarqua.
Implementaciones. Representaciones concretas de las interfaces (clases).
Son en esencia estructuras de datos reutilizables.
Algoritmos. Mtodos de clculo tiles tales como ordenaciones y bsquedas.
Se basan en el polimorfismo para hacerlos reusables.
colecciones y utilidades
jerarqua de interfaces

Collection Map

Set List Queue

SortedSet SortedMap
colecciones y utilidades
colecciones y tipos genricos

Hasta la versin 1.4 de Java, las colecciones trataban siempre con datos de tipo
Object.
Las colecciones podan mezclar objetos de naturalezas muy dispares.
Al obtener un objeto, se tena que hacer un casting al tipo real del objeto.
En la versin 1.5 de Java se introducen los tipos genricos, que permiten forzar a
una coleccin a que slo admita objetos de una determinada clase.
Su sintaxis es parecida a los templates de c++:
List<String>, Map<Integer,Persona>, Set<Fabrica>
Al obtener el objeto no es necesario hacer un casting ya que en tiempo de
compilacin se sabe de qu clase son los objetos que contiene.
colecciones y utilidades
la interfaz Collection

La interfaz Collection<T> es la base sobre la que descansa el JCF


Declara los siguientes mtodos ncleo que implementan todas las colecciones.
Mtodo Descripcin
add(T elem) El primero aade un elemento a la coleccin. El segundo fusiona el parmetro
addAll(Collection) coleccin con la coleccin actual.

clear() Borra todos los elementos de la coleccin dejndola vaca

contains(T elem) El primero indica si la coleccin contiene un determinado elemento. El segundo


containsAll(Coll) indica si todos los elementos del parmetro coleccin estn dentro de la actual.

remove(T elem) El primero borra un elemento de la coleccin. El segundo borra todos los
removeAll(Coll) elementos contenidos en el parmetro coleccin de la coleccin actual

isEmpty() Indica si la coleccin se halla vaca o no.

iterator() Devuelve un objeto iterador para recorrer los elementos de la coleccin

size() Devuelve el tamao de la coleccin

toArray() Transforma la coleccin en un array


colecciones y utilidades
la interfaz Set

La interfaz Set<T> representa conjuntos de elementos sin repetidos.


Modelan conjuntos propios de la teora de conjuntos matemtica. Por ese motivo
las operaciones All se comportan como operandos de teora de conjuntos.
addAll(Collection) es la unin entre dos conjuntos.
retainAll(Collection) es la interseccin entre dos conjuntos.
removeAll(Collection) es la diferencia entre conjuntos.
colecciones y utilidades
la interfaz List

La interfaz List<T> representa una coleccin de elementos que admite duplicados


y cuyo acceso a los elementos puede ser secuencial y aleatorio.
Se accede a cada elemento en funcin del orden que ocupa dentro de la
coleccin y se puede buscar el ndice que ocupa un elemento concreto
Aade nuevos mtodos respecto la interfaz Collection.

Mtodo Descripcin
get(index) Obtiene el elemento situado en la posicin index.

set(index, elem) Cambia el valor de la posicin index con el nuevo valor elem.
Aade el elemento elem en la posicin index desplazando otros
add(index, elem)
elementos hacia la derecha.
remove(index) Borra el elemento situado en la posicin index.
indexOf(elem) El primero busca la posicin de la primera ocurrencia de elem. El
lastIndexOf(elem) segundo, la ltima.
colecciones y utilidades
la interfaz Queue

La interfaz Queue<T> representa una coleccin que almacena elementos antes de


su procesado.
Por regla general las colas siguen un algoritmo LIFO (last in, first out)
Los elementos se insertan por detrs
Los elementos se extraen y consultan por delante (slo se puede acceder al
primero)

Mtodo Descripcin
add(elem) Aade un elemento al final de la cola. Mientras add puede lanzar
offer(elem) excepciones, offer devuelve un valor especial.
remove() Borra el primer elemento de la cola y lo devuelve. Mientras remove puede
poll() lanzar excepciones, poll devuelve un valor especial.
element() Obtiene el primer elemento de la cola sin sacarlo de ella. Mientras
peek() element puede lanzar excepciones, peek devuelve un valor especial.
colecciones y utilidades
la interfaz Map

La interfaz Map<K,V> representa un objeto que relaciona claves con valores.


Las claves son nicas, es decir, no existen claves duplicadas.
Una clave solo est asociada a un y slo un valor
Los valores pueden ser repetidos.
Los mapas permiten obtener las colecciones de claves y valores por separado.
Se obtiene un Set<K> para las claves
Se obtiene una Collection<V> para los valores
Se obtiene un Set<Map.Entry<K,V>> para las entradas del mapa.
Map.Entry<K,V> es una clase interna de Map que contiene dos valores: una
clave y un valor.
colecciones y utilidades
la interfaz Map

Mtodo Descripcin
put(key, value) Aade o sustituye el valor value para la clave key.

get(key) Obtiene el valor asociado a la clave key.

remove(key) Borra la entrada del mapa asociada a key.


containsKey(key) Indica si existe la clave key y el valor value dentro del mapa,
containsValue(val) respectivamente.
size() Obtiene el nmero de entradas que hay actualmente en el mapa.

isEmpty() Indica si el mapa est vacio.

clear() Borra todas las entradas del mapa y lo deja vaco.

putAll(Map<K,V>) Aade todas las entrada del parmetro Map al mapa actual

keySet() Devuelve el conjunto de claves del mapa (Set<K>)

values() Devuelve la coleccin de valores del mapa (Collection<V>)

entrySet() Devuelve el conjunto de entradas del mapa (Set<Map.Entry<K,V>>)


colecciones y utilidades
implementaciones

Interfaz
Set List Queue Map

Tabla de HashMap
HashSet
Hash HashTable

Array
ArrayList ArrayDeque
Redimen-
Vector Stack
Implementacin

sionable
rbol Balan-
TreeSet TreeMap
ceado

Lista
LinkedList LinkedList
Enlazada
Tabla Hash +
Lista LinkedHashSet LinkedHashMap
Enlazada

Heap PriorityQueue
colecciones y utilidades
implementaciones de Set

HashSet
Se implementa a travs de una tabla de Hash con un algoritmo de gestin de
colisiones de direccionamiento abierto.
La funcin de hashing viene dada por el mtodo hashIndex() de Object.
Se puede sobrescribir.
TreeSet
Se implementa a travs de un rbol rojinegro (red black tree). Es un rbol
binario de balanceo especial. Por la naturaleza de la estructura, la coleccin
siempre est ordenada y al recorrerse se hace siempre en orden.
LinkedHashSet
Se implementa a travs de una tabla hash con algoritmo de gestin de
colisiones de encadenamiento separado.
colecciones y utilidades
implementaciones de List

ArrayList
Se implementa a travs de un array redimensionable.
Es un array tpico que cuando necesita crecer se crea uno nuevo de capacidad
doble y copia los valores del array antiguo.
Es la opcin recomendada para listas de slo lectura o que crecen raramente.
LinkedList
Se implementa a travs de nodos encadenados secuencialmente con
referencias (punteros).
Es la opcin recomendada para listas que cambian de tamao muy a menudo,
sobre todo cuando se producen inserciones y borrados en medio de la lista.
colecciones y utilidades
implementaciones de List

public class TestList{


public static void main(String args[]){
List<Integer> coll = new ArrayList<Integer>();
coll.add(2); //Aade un elemento al final
coll.add(6);
coll.add(3);
coll.set(1, 24); //Cambia el valor de la posicion 1
for(int i=0; i<coll.size(); i++){ //Imprime valores
System.out.println(coll.get(i));
}
System.out.println(Tamao: + coll.size());
} }
colecciones y utilidades
implementaciones de Queue

LinkedList
Comparte implementacin con List. Es la opcin recomendada para
implementar una cola de propsito general
ArrayDeque
Se implementa a travs un array redimensionable.
Permite insertar y sacar elementos tanto del principio como del final de la cola.
PriorityQueue
Las colas de prioridad son colas en las que importa el orden de sus elementos.
De esta forma, elementos de mayor prioridad se cuelan a posiciones situadas
ms hacia el inicio de la cola.
Se implementa a travs de un heap.
colecciones y utilidades
implementaciones de Map

HashMap
Comparte la misma estructura de datos que HashSet (tabla de Hash)
La funcin de hash se aplica a las claves.
TreeMap
Comparte la misma estructura de datos que TreeSet (un rbol rojinegro)
Por la naturaleza de la estructura, la coleccin siempre est ordenada y al
recorrerse se hace siempre en orden.
LinkedHashMap
Comparte la misma estructura de datos que LinkedHashSet (tabla de Hash
con lista encadenada).
colecciones y utilidades
implementaciones de List

public class TestMap{


public static void main(String args[]){
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1234, David);
map.put(5678, Pedro);
map.put(1234, Laura); //Sustituye la entrada 1234
for(String val:map.values()) //Imprime los valores
System.out.println(val);
for(Integer key:map.keySet() //Imprime las claves
System.out.println(key);
}
}
colecciones y utilidades
algoritmos sobre colecciones

La clase java.util.Collections contiene un conjunto de mtodos estticos


muy tiles para realizar operaciones habituales sobre colecciones.
La mayora de estos mtodos realizan operaciones de comparacin entre
elementos. Por este motivo se necesita que se cumpla uno de estos dos requisitos:
Hacer que la clase de objetos contenidos implemente Comparable<T>. Es
una interfaz que tiene un nico mtodo compareTo(T obj) que devuelve un
int.
Pasar como parmetro una clase que implemente Comparator<T>. Esta
clase ha de tener un mtodo compare(T obj1, T obj2) que tambin
devuelve un int.
colecciones y utilidades
algoritmos sobre colecciones

Mtodo Descripcin
Realiza una bsqueda binaria de val sobre la lista list. La lista debe estar
binarySearch(list, val) ordenada para que el algoritmo funcione. Devuelve la posicin donde se halla
binarySearch(list, val, cmp) el elemento o en caso de no encontrarse la posicin donde debera ir. El
segundo mtodo admite un comparador.
sort(list) Ordena la lista list usando el algoritmo merge sort. El segundo mtodo
sort(list, comparator) admite un comparador.

shuffle(list) Permuta los elementos de la lista de forma aleatoria.

frequency(collect, obj) Devuelve el nmero de ocurrencias del objeto obj en collect.

disjoint(coll1, coll2) Indica si dos colecciones no comparten elementos entre s (son disjuntas).

min(coll, [cmp]) Busca el elemento mnimo y mximo de la coleccin coll. Estos mtodos
max(coll, [cmp]) admiten un comparador.

copy(list1, list2) Copia el contenido de list2 en list1.

fill(list, obj) Rellena y reemplaza todos los elementos de la lista list con obj.

reverse(list) Revierte el orden de los elementos de la lista list.

swap(list,i,j) Intercambia los valores de las posiciones i y j de la lista list.


colecciones y utilidades
iteradores

Un iterador es un objeto que permite recorrer los elementos de una coleccin y


eliminarlos si se desea.
Toda coleccin implementa un mtodo iterator() que devuelve el iterador sobre
dicha coleccin. Son objetos de la interfaz Iterator<E>.
Las List tienen un iterador especial llamado ListIterator que permite
recorrer en ambas direcciones.

Mtodo Descripcin
Indica si existen ms elementos en la coleccin, es decir, si hemos
hasNext()
llegado al fin
next() Devuelve el siguiente elemento de la coleccin
remove() Borra el elemento actual de la coleccin. Es un mtodo opcional.
colecciones y utilidades
la clase String

La clase java.lang.String representa cadenas de caracteres.


Aunque se las trate a veces como tal, no son tipos simples.
Admiten literales cerrado entre comillas dobles ();
String mensaje = Hola;
Al tratarse de objetos se inicializan a null si no se les da un valor (nunca se
inicializan por defecto a ).
Son inmutables, es decir, que no se puede modificar su contenido una vez
asignado
Java permite concatenar String a travs del operador +
String mensaje = Hola + y adis;
colecciones y utilidades
la clase String

Mtodo Descripcin
charAt(index) Devuelve el carcter situado en la posicin index.

concat(str) Concatena str con el String actual.

contains(cadena) Indica si el String actual contiene a cadena.


equals(cad) El primero indica si la cadena actual es igual a cad. El segundo hace lo
equalsIgnoreCase(cad) mismo pero no hace distincin entre maysculas y minsculas.
indexOf(char c) El primer mtodo devuelve la primera posicin donde haya el carcter c.
lastIndexOf(char c) El segundo realiza lo mismo pero busca la ltima posicin.
length() Devuelve el tamao en caracteres del String.

matches(regex) Indica si el String cumple con la expresin regular definida en regex.


El primer sustituye todas las ocurrencias de charO por charD. El
replace(charO, charD)
replace(regex, strNew) segundo sustituye todas aquellas regiones de la cadena que cumplan
con regex y las sustituye por el String srtNew.
colecciones y utilidades
la clase String

Mtodo Descripcin
Divide el String usando como separador la expresin regular regex.
split(regex)
Devuelve un array de String.
startsWith(prefix) Indica si la cadena empieza o termina dado un prefijo o sufijo como
endsWith(suffix) parmetro.
substring(ini,dest) Devuelve la subcadena entre ini y dest contenida en el string actual.
toLowerCase() El primero sustituye todas las letras maysculas por minsculas. El
toUpperCase() segundo sustituye todas las letras minsculas por maysculas.
trim() Elimina los espacios en blanco del inicio y final del String.
Mtodo esttico. Devuelve el valor de tipoSimple transformado en
valueOf(tipoSimple)
String. Admite como parmetro cualquier tipo simple.
colecciones y utilidades
la clase StringBuffer

Debido a que los String son inmutables, StringBuffer nos ofrece la posibilidad
de construir cadenas modificables durante el transcurso del programa.
Al concatenar dos String s1 + s2 no se aade s1 al final de s2, sino que de
forma transparente al programador se crea un StringBuffer, se concatena y se
devuelve un nuevo String.

Mtodo Descripcin
Aade valor al final de la secuencia. Puede ser un tipo simple, un String o un
append(valor)
Object.
delete(ini,fin) El primero borra toda la secuencia entre ini y fin. El segundo borra el
deleteCharAt(pos) carcter situado en la posicin pos.
Aade en la posicin pos, el valor val. val puede ser un tipo simple, un
insert(pos,val)
string o un Object.
setCharAt(pos,car) Sustituye el carcter de la posicin pos por car.

toString() Devuelve la representacin como String del StringBuffer


colecciones y utilidades
wrappers

Las clases wrapper son la solucin que da Java para suplir la necesidad de tratar
los tipos de datos simples como objetos.
Se crea un objeto que envuelve (encapsula) al
Tipo Simple Wrapper
boolean Boolean
tipo simple.

byte Byte Los valores de las clases wrapper son inmutables,


char Character es decir, no se pueden sobrescribir.
short Short Para construir un objeto wrapper basta con pasar
int Integer el valor del tipo simple al constructor adecuado.
long Long
Para consultar el valor se usa el mtodo
float Float
tipoValue(), donde tipo es el tipo simple.
double Double
colecciones y utilidades
wrappers

Ejemplos:
Integer integ = new Integer (7); int i = integ.intValue();
Double doub = new Double(5.2); double d = doub.doubleValue();
int i2 = integ; //Error de compilacin. Asign incompatible
Importante! A partir de la versin 1.6 de Java se permite usar literales de tipos
simples directamente sobre los tipos wrapper.
Integer i = 6; Character c = H;
Double d = 5.9f;
private void f(Integer x, Double y){}
f(45,6.9);
colecciones y utilidades
la clase Math

Mtodo Descripcin
abs(x) Devuelve el valor absoluto de x.

sin(x)
Devuelve el seno, coseno y tangente de x. Sus inversas son asin, acos y atan,
cos(x)
respectivamente
tan(x)
ceil(x) El primero devuelve la representacin de x como entero redondeada hacia arriba. El
floor(x) segundo la devuelve redondeada hacia abajo. El tercero devuelve x redondeado hacia
round(x) arriba o hacia abajo dependiendo de su parte decimal
exp(x)
El primero devuelve ex. El segundo, xy.
pow(x,y)
log(x)
El primero devuelve el logaritmo neperiano de x. El segundo, el logaritmo en base 10.
log10(x)
sqrt(x)
El primero devuelve la raz cuadrada de x. El segundo devuelve (x2 + y2)
hypot(x,y)
max(x,y)
Devuelven el mximo y el mnimo entre x e y, respectivamente
min(x,y)

random() Devuelve un nmero aleatorio comprendido entre 0.0 y 1.0

toDegrees(x)
Convierte x a degrados y a radianes, respectivamente
toRadians(x)
colecciones y utilidades
la clase Date

La clase java.util.Date representa instantes de tiempo con precisin de


milisegundo.
Se usa para representar fechas y/o horas
inmutables, es decir, no modificables.
Se codifican internamente con un atributo
long que representa el nmero de
milisegundos transcurridos desde las 00:00:00
del 01/01/1970.
colecciones y utilidades
la clase Calendar

Al igual que Date, la clase java.util.Calendar representa instantes de tiempo.


La diferencia bsica respecto a Date radica en que Calendar permite
modificacin y consultas de campos concretos (segundos, hora, mes, ao, etc.).
Cada campo se especifica a travs de una constante definida en la propia
clase. As, MONTH hace referencia al mes del ao.

Campo Descripcin Campo Descripcin


MILLISECOND Segundo DAY_OF_MONTH Da del mes

SECOND Minuto MONTH Mes


MINUTE Hora YEAR Ao
HOUR Da de la semana MONDAY - SUNDAY Lunes Domingo
DAY_OF_WEEK Da del mes JANUARY - DECEMBER Enero Diciembre
colecciones y utilidades
la clase Calendar

Para modificar una fecha es necesario especificar qu campo vamos a modificar y


el valor. Por ejemplo la siguiente instruccin aade un da a la fecha actual:
cal.add(Calendar.DAY_OF_MONTH, 1);

Mtodo Descripcin
Aade o quita al campo cmp la cantidad especificada en cant. Es sensible al cambio de
add(cmp, cant)
campos superiores.

get(cmp) Obtiene el valor del campo cmp.

getInstance() Mtodo esttico. Obtiene la instancia de Calendar con la configuracin de hora local.

Aade o quita al campo cmp la cantidad especificada el cant. No es sensible al cambio de


roll(campo, cant)
campos superiores.

set(campo, val) Modifica el valor del campo cmp con el nuevo valor val.

getTime() Obtiene el objeto Date inmutable que representa Calendar.

setTime(Date) Cambia los campos de Calendar en funcin de la fecha pasada como parmetro.

Você também pode gostar