Professional Documents
Culture Documents
Juan Pavn Mestras Dep. Sistemas Informticos y Programacin Universidad Complutense Madrid
clases interfaces
paquetes
una sentencia package sentencias import definicin de class definicin de interface comentarios
Todo lo dems (variables, constantes, mtodos) est dentro de las definiciones de clase e interfaz Hay tambin tipos bsicos primitivos (a partir de los cuales se definen las variables y parmetros de los mtodos)
Comentarios
/* Un comentario que aparece en varias lneas */ /** Comentario de documentacin. La herramienta javadoc genera html a partir de este tipo de comentarios */
Juan Pavn Mestras Facultad de Informtica UCM, 2004 Elementos del lenguaje Java
Identificadores
Comienzan con letra (incluyendo _ y $) Seguido de letras o dgitos Cualquier longitud Se distinguen maysculas de minsculas Ejemplos: x _var1 ao $Carcter
Identificadores
Palabras clave:
continue default do double else extends final finally float for if implements import instanceof int interface long native new package private protected public return short static strictfp super switch this throw throws transient try void volatile
synchronized while
const
goto
Paquetes
Cada clase o interfaz en Java est dentro de un paquete El paquete al que pertenecen se declara al principio del fichero en el que se especifique la clase o interfaz:
package nombre; // declara todo lo que haya en el fichero // como parte del paquete "nombre"
Si no se declara un paquete especfico entonces se considera que pertenece a un paquete por defecto (default) que no tiene ningn nombre
El paquete por defecto slo se suele utilizar en aplicaciones pequeas o temporales Se recomienda acostumbrarse a definir paquetes para todas las aplicaciones
Paquetes
Los paquetes:
Paquetes
Paquetes dentro de paquetes Clases dentro de paquetes Mtodos dentro de clases Variables dentro de mtodos y clases
Ejemplo: java.lang.System.out Es la variable out, de la clase System, del paquete lang, del paquete java
Paquetes
Ejemplo:
es.ucm.sip.jpavon.cursoJava
10
Paquetes
11
Paquetes
Usando el nombre completo: class ImprimeFecha1 { public static void main (String[] args) { java.util.Date ahora = new java.util.Date(); System.out.println(ahora); } } Usando la clusula import: import java.util.Date; class ImprimeFecha2 { public static void main (String[] args) { Date ahora = new Date(); System.out.println(ahora); } }
12
Paquetes
import
* permite importar todas las clases e interfaces de un paquete import java.util.*; // todas las clases e interfaces de util import java.*; // ERROR: no vale para paquetes
Ejemplo: Para importar la clase Applet, hay dos posibilidades: import java.applet.Applet; // directamente la clase import java.applet.*; // todos los nombres del paquete
13
Paquetes
java.lang // clases e interfaces bsicas (se importa por defecto) java.applet // clase Applet e interfaces para interaccin con navegador java.awt // Abstract Windowing Toolkit java.io // E/S java.net // clases para comunicacin a travs de protocolos Internet java.rmi // Programacin distribuida java.security // Seguridad en Java java.util // Utilidades Javax.swing // componentes grficos para Java
14
Paquetes
Ejemplo
package ucm.sip.juan.curso.java; import java.util.Date;
La clase ImprimeFecha est declarada dentro del paquete ucm.sip.juan.curso.java
class ImprimeFecha { public static void main (String[] args) { Date ahora = new Date(); System.out.println(ahora); } }
La clase System est dentro del paquete java.lang (que se importa por defecto) Se podra poner java.lang.System.out.println
Juan Pavn Mestras Facultad de Informtica UCM, 2004 Elementos del lenguaje Java
15
Clases
La unidad fundamental de programacin en Java es la clase Un programa Java en ejecucin crea y manipula (mediante llamadas a mtodos) objetos Cada objeto es un ejemplar de una clase
Cuando se invoca un mtodo de un objeto, se mira en el cdigo de su clase las acciones a ejecutar Un objeto puede usar otros para realizar su trabajo
16
Clases
Cabecera Campos:
Variables Constantes
Mtodos:
Funciones Constructores Bloques de inicializacin static
17
Clases
// visible fuera del paquete // no se pueden crear ejemplares de la clase // sin subclases // la clase hereda de otra
18
Clases
public class AppletFecha nombre de la clase extends Applet es un applet implements Runnable implementa los mtodos de la interfaz Runnable { /* Definiciones de variables y mtodos */ }
19
Clases y objetos
Creacin de objetos: con el operador new A los objetos se accede mediante referencias a objeto Ejemplo:
C c1;
c1 se declara como una referencia a objeto de la clase C Inicialmente tiene el valor null
c1 = new C();
se crea un nuevo objeto (ejemplar) de la clase C c1 cambia su valor para referenciar al nuevo objeto
C c2 = new C();
se crea un nuevo objeto (ejemplar) de la clase C, al que se refiere c2
C c3 = c1;
se crea una nueva referencia al objeto al que se refera c1
20
Clases y objetos
Ejemplo de clase:
public class Punto { public double x, y; }
21
Clases y objetos
class PruebaIgualdad { public static void main(String args[]) { String str1, str2; str1 = "Esta cadena bien sirve para una prueba."; str2 = str1; compara las referencias System.out.println("String1: " + str1); System.out.println("String2: " + str2); System.out.println("El mismo objeto? " + (str1 == str2)); str2 = new String(str1); System.out.println("String1: " + str1); System.out.println("String2: " + str2); System.out.println("El mismo objeto? " + (str1 == str2)); System.out.println("El mismo valor? "+ str1.equals(str2)); } compara el valor de los objetos
Elementos del lenguaje Java
22
Tipos en Java
Tipo de datos primitivo Tipo Referencia Los atributos, variables, parmetros y retornos de los mtodos deben tener un tipo El compilador comprueba que se utilizan en todo momento tipos compatibles
23
Tipos primitivos
-1
0x1d
2.4e1 false A
.24e2
0.0
Booleanos: 1 bit
true
24
!= x+=2 x-=2
Desplazamiento de bits a la izquierda Desplazamiento de bits a la derecha Desplazamiento de bits a la derecha con ceros
op--
x*=2
x=x*2
Elementos del lenguaje Java
25
Tipos primitivos
No se puede invocar mtodos en estos tipos No se pueden utilizar donde puede haber objetos
26
Tambin se conocen como tipos de objetos Se le puede asignar una instancia de esa clase o de cualquiera de sus subclases Se le puede asignar una instancia de cualquier clase que implemente la interfaz
27
Operador instanceof != == =
28
29
Constantes
null (referencia literal de objeto) true y false 12 0 28.4 N \116 \n "Hola Mundo.
Se declaran con la palabra clave final final float pi = 3.141592; final valormax = 255; final int abierto = 0, cerrado = 1;
30
private
Acceso slo dentro de la clase Acceso desde cualquier lugar Acceso en las subclases (en cualquier paquete) y desde las clases del propio paquete NOTA: Si la subclase est declarada en otro paquete, entonces slo puede acceder al miembro protected si se trata de una variable del tipo de la propia subclase
public
protected
31
32
package EjemploProtected; class Otra { void metodo (Valor unValor) { // legal unValor.v = 0; // legal } } package OtroPaquete; import EjemploProtected.Valor; class Ilegal extends Valor{ void metodo(Valor uno, Ilegal dos) { uno.v = 1; // ilegal !!! dos.v = 2; // legal } }
Elementos del lenguaje Java
33
Cuando utilizar...
cdigo private se puede cambiar sin afectar el cdigo cliente cambios en cosas public pueden afectar al cdigo cliente protected significa que hay control sobre el cdigo a tocar en caso de cambios
Elementos del lenguaje Java
34
Miembros estticos
35
Miembros estticos
Variables de clase
Hay exactamente una (aunque no exista ningn objeto) Se inicializan antes de usarse: public static final int MAXIMO = 12; protected static int[] primos = new int[4]; Se usan como variables finales para definir constantes de clase
Otras utilizaciones no suelen resultar de un buen diseo
36
Miembros estticos
Mtodos de clase
Se invocan en nombre de la clase Slo pueden acceder a variables de clase Para realizar funciones de utilidad (que slo actan sobre sus parmetros: Math.sqrt(234.0); public static void main() {};
37
Miembros estticos
Para configurar campos estticos u otros estados necesarios static { for (int i = 0; i < primos.length; i++) primos[i] = i; }
38
Expresiones
Cada expresin tiene un tipo que se determina en tiempo de compilacin una constante (un literal): una variable el resultado de una operacin true x x+1 0 1.0 resultado ((x=3) || b)
39
Expresiones
+ * / %
Cuando los tipos de operandos no coinciden, el operando de menor rango se convierte implcitamente al tipo de mayor rango:
double > float > long > int > short > byte
El resultado de la operacin es del tipo de mayor rango Al operar con byte y short, se convierten implcitamente a int
40
Expresiones
Expresiones aritmticas Operadores aritmticos (ejemplo) class PruebaAritmtica { public static void main (String args[]) { short x = 6; int y = 4; float a = 12.5f; float b = 7f; System.out.println("x System.out.println("x System.out.println("x System.out.println("x System.out.println("x es " + x + ", y es " + y); + y = " + (x + y)); - y = " + (x - y)); / y = " + (x / y)); % y = " + (x % y));
41
Expresiones
preincremento: ++x postincremento: x++ predecremento: --x postdecremento: x-normal: adicin: resta: multiplicacin: divisin: x x x x x =y += y -= y *= y /= y
Operadores de asignacin
x x x x
= = = =
x x x x
+y -y *y /y
42
Expresiones
x && y x || y !x
Comparaciones
igual: x == y diferente: x != y Para objetos se define el mayor que: x>y mtodo equals() menor que: x<y mayor o igual que: x >= y menor o igual que: x <= y
43
Expresiones
AND: OR: XOR: Desplazamiento izd: Desplazamiento der: Llenado de 0 a der: complemento de bits:
44
Expresiones
Expresiones
45
Conversin de tipos
Conversiones implcitas
Conversiones explcitas
46
Mtodos
Funciones Constructores (cuando se crea un objeto) Finalizadores (cuando se destruye un objeto) Nombre del mtodo Tipo de objeto o tipo primitivo que devuelve (o void) Lista de parmetros
Todos los argumentos se pasan por valor Los objetos se pasan por referencia
47
Mtodos
Mtodos
public class sitioweb { String nombre; String url; String descripcion;
Definicin de mtodo
Mtodos constructores
Inicializan un objeto
Pueden llamar al constructor del padre super(parmetros); o a otros constructores de la misma clase this(parmetrosPorDefecto);
49
Mtodos constructores
public class sitioweb { String nombre; String url; String descripcion;
sitioweb() { nombre = ""; url = ""; descripcion = ""; } sitioweb(String n, String u, String d) { nombre = n; url = u; descripcion = d; } } sitioweb w1 = new sitioweb(); sitioweb w2; w2 = new sitioweb("Juan","http://grasia.fdi.ucm.es/","Genial");
Juan Pavn Mestras Facultad de Informtica UCM, 2004 Elementos del lenguaje Java
50
Mtodos finalizadores
Un objeto se elimina cuando se deja de hacer referencia a l No hay que eliminar los objetos explcitamente
en Java no existe delete
Para hacer limpieza de recursos no Java (recursos externos) Por ejemplo: cerrar conexiones, cerrar ficheros, registrar algn tipo de resultado, etc. Al acabar un programa, se ejecuta finalize para todos los objetos
protected void finalize() throws Throwable { super.finalize(); // conviene ponerlo siempre if ( archivo != null ) // si el archivo no se ha cerrado { archivo.close(); archivo = null; } }
Juan Pavn Mestras Facultad de Informtica UCM, 2004 Elementos del lenguaje Java
51
Instrucciones
Las instrucciones son expresiones Java El punto y coma (;) indica el final de una instruccin
Declaracin de variables Asignacin de variables Creacin de objetos Envo de mensajes Coche miBlido; double velocidad; velocidad = 100.00; miBlido = new Coche(); miBlido.acelera(velocidad);
52
Instruccin vaca
; //esto es una instruccin vaca for (int i=1; i<5; i++) ; System.out.println(i);
// en vez de imprimir 0,1,2,3,4 // no imprime nada porque hay una instruccin vaca en el for
53
Instrucciones
Instrucciones bsicas
Declaracin:
int x, y = 0, z; boolean b;
tipo variable;
Asignacin:
x = y + z; b = true;
var = expresin;
54
Instrucciones
Instruccin condicional if
if (expresin_booleana) instruccin if (expresin_booleana) instruccin else instruccin Ejemplo: if ( x > y ) System.out.println("El mayor de x e y es x: " + x); else if ( x < y ) System.out.println("El mayor de x e y es y: " + y); else System.out.println("x e y tienen el mismo valor: " + x);
55
Instrucciones
Se tiene que especificar break para salir de la sentencia switch Se puede usar un conjunto de instrucciones para varios casos: case expresin-constantex: case expresin-constantey: case expresin-constantez: instrucciones
56
Instrucciones
class LectorDeNumeros { String convierteNumero(int valor) { switch (valor) { case 0: return "cero "; case 1: return "uno "; case 2: return "dos "; case 3: return "tres "; case 4: return "cuatro "; case 5: return "cinco "; case 6: return "seis "; case 7: return "siete "; case 8: return "ccho "; case 9: return "nueve "; default: return " "; } } public static void main (String args[]) { LectorDeNumeros n = new LectorDeNumeros (); String num = n.convierteNumero(4) + n. convierteNumero(1) + n. convierteNumero(5); System.out.println("415 se lee como " + num);
Elementos del lenguaje Java
57
Instrucciones
Operador condicional ? :
prueba ? resultadotrue : resultadofalse
58
Instrucciones
Ciclos
while (expresin_booleana) instruccin do instruccin while (expresin_booleana) for (instruccion_inicializacin; expresin_booleana; instruccin_incremento) instruccin break permite salir del ciclo continue salta a la siguiente iteracin
59
Instrucciones
60
Arrays
Aunque son objetos, su declaracin, creacin e inicializacin es diferente que para otros objetos Declaracin
El tipo de variable que tiene un array se especifica al declararlo, aadiendo un par de corchetes ([])
int A[]; // A es un array de enteros int [] A; // igual que antes int A[10]; //ERROR: no se especifica el tamao en la declaracin String S[]; // un array de cadenas String S,T[]; // S es una cadena y T un array de cadenas String[] S,T; // Ambos, S y T, son arrays de cadenas
61
Arrays
int A[] = new int[10]; // array de 10 enteros: A[0]..A[9] String[] S; S = new String[10];
62
Arrays
Array de arrays
int[][] A; A = new int[2]; for (int i = 0; i < A.length; i++) A[i] = new int[3]; A = new int[2][3]; // lo mismo que las dos sentencias anteriores
Se podra haber hecho un array de arrays de diferentes tamaos
63
Arrays
El primer elemento de un array tiene el ndice 0 Se comprueba automticamente los lmites del array
Si se intenta acceder fuera de los lmites del array (entre 0 y length-1), se produce la excepcin IndexOutOfBoundsException.
64
Cadenas de caracteres
Se pueden concatenar con el operador + Todos los objetos tienen el mtodo toString() Se pueden formatear con valueOf() Se comparan con equals() (== es para comparar referencias)
65
Cadenas de caracteres
Se crea con StringBuffer(NumeroGrande) Luego se usan los mtodos insert(), append(), setCharAt(), ... Al final se llama a toString() para obtener un String
66