Elementos del lenguaje Java



Documentos relacionados
Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

Tema 2. El lenguaje de programación Java (Parte 1)

Elementos léxicos del lenguaje de programación Java

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

2. Estructura de un programa en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Objetivo de aprendizaje del tema

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Modulo 1 El lenguaje Java

Programación Orientada a Objetos con Java

Introducción a Java LSUB. 15 de enero de 2015 GSYC

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo

Universidad de Cantabria

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

Repaso de las características más importantes de la programación Java y su adaptación a Android

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

11. Algunas clases estándar de Java (II)

Curso Introducción JAVA Pág.: 1

Tema 3 Elementos básicos de programación

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

19. Packages o paquetes

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Fundamentos del Lenguaje de Programación Java

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Tema: Sobrecarga de Operadores.

Tipos primitivos y clases de interés

Curso de Java POO: Programación orientada a objetos

Programación orientada a objetos

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

10. Algunas clases estándar de Java (I)

Tema: Arreglos de Objetos en C++.

James Gosling, creador de Java

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Introducción a la programación orientada a objetos

9. Objetos y clases Clases

Fundamentos de la Programación Orientada a Objetos Agrupación de objetos. Colecciones e iteradores

Introducción a la Programación Orientada a Objetos

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Programación Orientada a Objetos en Java

Objetos y Clases en Java. ELO-329: Diseño y Programación Orientados a Objetos

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Programación Orientada a Objetos. Java: Excepciones

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

8. Sentencia return y métodos

Programación Orientada a Objetos. Java: Excepciones

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

3.2 Operaciones aritmético-lógicas en Pascal

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

1. Visión general de RMI

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Java Inicial (20 horas)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

15. Parámetros o argumentos

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Programación Orientada a Objetos en Java

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Ejercicios de evaluación de fundamentos de programación en Java

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

TEMA 2. Agenda. Fundamentos de JAVA

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Programación en Java. Hola Jesus. Primera clase del curso de Java

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Tema 1. Introducción a JAVA

Programación Orientada a Objetos en JAVA

Multitarea en Java. Rafa Caballero - UCM

2.1. Introducción al lenguaje Java

Primer Parcial Septiembre 5 de 2009

El Concepto De Objeto y Clase

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Tema 2. El lenguaje de programación Java. Arrays y cadenas

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Se guardan en archivos con extencion c y los cabezales con extension h

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Ingeniería del Software Arquitectura Física en 3 niveles

Paquetes de java. java.applet

Iniciación a Java. 1.Introducción a Java 2.Programación Orientada a Objetos 3.Fundamentos del lenguaje Java

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

El lenguaje de Programación C. Fernando J. Pereda

La Plataforma J2SE (Java 7) PROGRAMA HOLA MUNDO

Objetos y Clases en Java. ELO 329: Diseño y Programación Orientados a Objetos

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Programación en Java. Programación en OO

Estándares de codificación Java

Programación de Sistemas

Uso de excepciones en Java

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Tutorial Servicios Web

Introducción al lenguaje JAVA

Java en 2 horas. Rodrigo Santamaría

Transcripción:

Elementos del Lenguaje Java Programación Orientada a Objetos Facultad de Informática Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid Elementos del lenguaje Java Un programa Java es una colección de clases interfaces Clases e interfaces están agrupadas en paquetes Facultad de Informática UCM, 2004 Elementos del lenguaje Java 2

Elementos del lenguaje Java Un fichero.java sólo puede tener: una sentencia package Definición y utilización de paquetes sentencias import definición de class definición de interface comentarios Todo lo demás (variables, constantes, métodos) está dentro de las definiciones de clase e interfaz Hay también tipos básicos primitivos (a partir de los cuales se definen las variables y parámetros de los métodos) Facultad de Informática UCM, 2004 Elementos del lenguaje Java 3 Comentarios // comentario hasta el final de la línea /* Un comentario que aparece en varias líneas */ /** Comentario de documentación. La herramienta javadoc genera html a partir de este tipo de comentarios */ Facultad de Informática UCM, 2004 Elementos del lenguaje Java 4

Identificadores Permiten nombrar paquetes, clases, interfaces, variables, objetos Sintaxis: Comienzan con letra (incluyendo _ y $) Seguido de letras o dígitos Cualquier longitud Se distinguen mayúsculas de minúsculas Ejemplos: x _var1 año $Carácter Facultad de Informática UCM, 2004 Elementos del lenguaje Java 5 Identificadores Palabras clave: abstract continue float long short throws boolean default for native static transient break do if new strictfp try byte double implements package super void case else import private switch volatile catch extends instanceof protected synchronized while char final int public this class finally interface return throw Otras palabras clave (sin uso actual): const goto Otras palabras reservadas: false, true, null Facultad de Informática UCM, 2004 Elementos del lenguaje Java 6

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 específico entonces se considera que pertenece a un paquete por defecto (default) que no tiene ningún nombre El paquete por defecto sólo se suele utilizar en aplicaciones pequeñas o temporales Se recomienda acostumbrarse a definir paquetes para todas las aplicaciones Facultad de Informática UCM, 2004 Elementos del lenguaje Java 7 Paquetes Los paquetes: Definen contextos de denominación Para evitar colisión de nombres Sirven para definir bibliotecas de clases e interfaces Reutilización: no volver a inventar la rueda Permiten organizar el código de una gran aplicación Las clases e interfaces relacionadas se declaran en el mismo paquete Ayuda a encontrar dónde están clases e interfaces Permite restringir el acceso a clases y operaciones de un paquete Mayor seguridad del código Facultad de Informática UCM, 2004 Elementos del lenguaje Java 8

Paquetes Los paquetes pueden anidarse Define una jerarquía: paquete.subpaquete.subpaquete.clase Operador de resolución de ámbito:. Paquetes dentro de paquetes Clases dentro de paquetes Métodos dentro de clases Variables dentro de métodos y clases Ejemplo: java.lang.system.out Es la variable out, de la clase System, del paquete lang, del paquete java Facultad de Informática UCM, 2004 Elementos del lenguaje Java 9 Paquetes Convención para el nombrado de paquetes (para conseguir nombres exclusivos): dominio.empresa.departamento.proyecto Autor del paquete (nombre de dominio Internet al revés) Ejemplo: es.ucm.sip.jpavon.cursojava Facultad de Informática UCM, 2004 Elementos del lenguaje Java 10

Paquetes Un paquete determina un subdirectorio del disco En el ejemplo anterior: es/ucm/sip/jpavon/cursojava/ Variable de entorno CLASSPATH Indica en qué directorios o ficheros zip empezar a buscar paquetes Se inicializa así: En Unix (por ejemplo en csh): set classspath=(/usr/jdk1.1/lib/classes.zip;...) En PC (en autoexec.bat): SET CLASSPATH=C:\JAVA\JDK1.1\lib\classes.zip;.; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 11 Paquetes Utilización de nombres (públicos) de un paquete: 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 cláusula import: import java.util.date; class ImprimeFecha2 { public static void main (String[] args) { Date ahora = new Date(); System.out.println(ahora); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 12

Paquetes import No es necesario para el paquete java.lang Siempre se asume: import java.lang.* * 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 El compilador busca en classes/java/applet/* Facultad de Informática UCM, 2004 Elementos del lenguaje Java 13 Paquetes Paquetes estándar de Java java.lang // clases e interfaces básicas (se importa por defecto) java.applet // clase Applet e interfaces para interacción con navegador java.awt // Abstract Windowing Toolkit java.io // E/S java.net // clases para comunicación a través de protocolos Internet java.rmi // Programación distribuida java.security // Seguridad en Java java.util // Utilidades Javax.swing // componentes gráficos para Java Documentados en línea (Java API): http://directorioinstalacionjava/docs/api/index.html Se puede descargar desde http://java.sun.com/j2se/1.4.2/download.html#docs como un fichero zip que se suele descomprimir en el directorio donde se haya instalado el JDK Facultad de Informática UCM, 2004 Elementos del lenguaje 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 podría poner java.lang.system.out.println Facultad de Informática UCM, 2004 Elementos del lenguaje Java 15 Clases La unidad fundamental de programación en Java es la clase Un programa Java en ejecución crea y manipula (mediante llamadas a métodos) objetos Cada objeto es un ejemplar de una clase Cuando se invoca un método de un objeto, se mira en el código de su clase las acciones a ejecutar Un objeto puede usar otros para realizar su trabajo Facultad de Informática UCM, 2004 Elementos del lenguaje Java 16

Clases Una definición de clase comprende: Cabecera Campos: Variables Constantes Métodos: Funciones Constructores Bloques de inicialización static estado del objeto comportamiento Facultad de Informática UCM, 2004 Elementos del lenguaje Java 17 Clases Cabecera: class nombre_de_clase { /* definiciones de variables y métodos */ Modificadores: public class // visible fuera del paquete En un fichero.java puede haber como mucho una clase public abstract class // no se pueden crear ejemplares de la clase Porque tiene métodos indefinidos (declaradas como abstract) final class // sin subclases class C extends superclase // la clase hereda de otra Sólo herencia simple (una sóla superclase) class C implements interfaz // implementa una o más interfaces Pero puede implementar varias interfaces Facultad de Informática UCM, 2004 Elementos del lenguaje Java 18

Clases package ucm.sip.juan.curso.java; import java.applet.applet; accesible como ucm.sip.juan.curso.java.appletfecha public class AppletFecha nombre de la clase extends Applet es un applet implements Runnable { /* Definiciones de variables y métodos */ implementa los métodos de la interfaz Runnable Facultad de Informática UCM, 2004 Elementos del lenguaje Java 19 Clases y objetos Creación 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 refería c1 Facultad de Informática UCM, 2004 Elementos del lenguaje Java 20

Clases y objetos Ejemplo de clase: public class Punto { public double x, y; La clase Punto tiene dos campos (que representan las coordenadas) los campos son visibles por otros objetos Creación y manipulación de objetos de la clase Punto: Punto p = new Punto(); p.x = 1.0; p.y = 2.24; Punto q, r; q = new Punto(); q.x = p.y; q.y = p.x; r = x; // r se refiere al mismo punto que x Facultad de Informática UCM, 2004 Elementos del lenguaje Java 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 Facultad de Informática UCM, 2004 Elementos del lenguaje Java 22

Tipos en Java Hay dos tipos diferentes en Java: Tipo de datos primitivo Tipo Referencia Se dice que Java es un lenguaje fuertemente tipado Los atributos, variables, parámetros y retornos de los métodos deben tener un tipo El compilador comprueba que se utilizan en todo momento tipos compatibles Facultad de Informática UCM, 2004 Elementos del lenguaje Java 23 Tipos primitivos Representan datos sencillos en Java: Enteros (con signo): MIN_VALUE MAX_VALUE byte 8 bits -128 +127 short 16 bits -32768 +32767 int 32 bits -2147483648 +2147483647 long 64 bits -2**63 2**63-1 0 1-1 29 035 0x1d 29L Reales (coma flotante, IEEE 754-1985): float 32 bits double64 bits 24. 2.4e1.24e2 0.0 Booleanos: 1 bit true false Caracteres (ISO Unicode 1.1 de 16 bits): a A \n \u000a Facultad de Informática UCM, 2004 Elementos del lenguaje Java 24

Operadores en tipos primitivos Operador Descripción Operador Descripción Keyword Description + suma < menos & and - resta > mayor or * multiplicación = asignación ^ xor / división >= Mayor o igual! not % resto <= Menor o igual && lazy and ( ) El código debe ejecutarse antes == igual lazy or ++op Incrementa antes!= No igual << Desplazamiento de bits a la izquierda --op Decrementa antes x+=2 x=x+2 >> Desplazamiento de bitsaladerecha op++ Incrementa después x-=2 x=x-2 >>> Desplazamiento de bitsaladerecha con ceros op-- Decrementa después x*=2 x=x*2 Facultad de Informática UCM, 2004 Elementos del lenguaje Java 25 Tipos primitivos No son objetos Java No se puede invocar métodos en estos tipos No se pueden utilizar donde puede haber objetos Existen clases Java estándar para manipularlos como objetos: Double, Float, Integer, Long, Short, Boolean, etc. En el paquete java.lang Facultad de Informática UCM, 2004 Elementos del lenguaje Java 26

Tipos referencia (objetos) Los tipos referencia en Java son una clase o una interfaz También se conocen como tipos de objetos Si una variable se declara como del tipo de una clase Se le puede asignar una instancia de esa clase o de cualquiera de sus subclases Si una variable se declara como de tipo de una interfaz Se le puede asignar una instancia de cualquier clase que implemente la interfaz Facultad de Informática UCM, 2004 Elementos del lenguaje Java 27 Operadores en objetos (referencias) Operador Descripción instanceof!= Comprueba el tipo del objeto No idéntico == Idéntico = Asignación Facultad de Informática UCM, 2004 Elementos del lenguaje Java 28

Facultad de Informática UCM, 2004 Elementos del lenguaje Java 29 Constantes Literal (valor constante de un tipo) null (referencia literal de objeto) true y false 12 0 28.4 N \116 \n "Hola Mundo. Variable constante (variable cuyo valor nunca cambia) Se declaran con la palabra clave final final float pi = 3.141592; final valormax = 255; final int abierto = 0, cerrado = 1; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 30

Control de acceso a miembros de una clase private Acceso sólo dentro de la clase public Acceso desde cualquier lugar protected Acceso en las subclases (en cualquier paquete) y desde las clases del propio paquete NOTA: Si la subclase está declarada en otro paquete, entonces sólo puede acceder al miembro protected si se trata de una variable del tipo de la propia subclase Si no se indica nada, entonces la visibilidad es dentro del paquete Facultad de Informática UCM, 2004 Elementos del lenguaje Java 31 Control de acceso a miembros de una clase El acceso se controla a nivel de clase, no de objeto Por ejemplo: class Valor { private int v; boolean esigual(valor otrovalor) { if (this.v == otrovalor.v) return true; return false; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 32

Control de acceso a miembros de una clase Ejemplo de uso de protected package EjemploProtected; public class Valor { protected int v; 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 Facultad de Informática UCM, 2004 Elementos del lenguaje Java 33 Control de acceso a miembros de una clase Resumen de niveles de acceso private Clase X Subclase Paquete Resto protected X X(*) X public X X X X paquete X X Cuando utilizar... código private se puede cambiar sin afectar el código cliente cambios en cosas public pueden afectar al código cliente protected significa que hay control sobre el código a tocar en caso de cambios Facultad de Informática UCM, 2004 Elementos del lenguaje Java 34

Miembros estáticos Sólo hay un miembro por clase Se declaran con la palabra clave static variables y métodos de clase Facultad de Informática UCM, 2004 Elementos del lenguaje Java 35 Miembros estáticos Variables de clase Hay exactamente una (aunque no exista ningún 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 diseño Facultad de Informática UCM, 2004 Elementos del lenguaje Java 36

Miembros estáticos Métodos de clase Se invocan en nombre de la clase Sólo pueden acceder a variables de clase Para realizar funciones de utilidad (que sólo actúan sobre sus parámetros: Math.sqrt(234.0); public static void main() {; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 37 Miembros estáticos Bloques de inicialización estática Para configurar campos estáticos u otros estados necesarios static { for (int i = 0; i < primos.length; i++) primos[i] = i; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 38

Expresiones Las expresiones son instrucciones que devuelven un valor Cada expresión tiene un tipo que se determina en tiempo de compilación Una expresión puede ser: una constante (un literal): true 0 1.0 una variable x resultado el resultado de una operación x+1 ((x=3) b) Facultad de Informática UCM, 2004 Elementos del lenguaje Java 39 Expresiones Expresiones aritméticas Operadores aritméticos Suma: + Resta: - Multiplicación: * División: / resto: % Cuando los tipos de operandos no coinciden, el operando de menor rango se convierte implícitamente al tipo de mayor rango: double > float > long > int > short > byte El resultado de la operación es del tipo de mayor rango Al operar con byte y short, se convierten implícitamente a int Facultad de Informática UCM, 2004 Elementos del lenguaje Java 40

Expresiones Expresiones aritméticas Operadores aritméticos (ejemplo) class PruebaAritmética { public static void main (String args[]) { short x = 6; int y = 4; float a = 12.5f; float b = 7f; System.out.println("x es " + x + ", y es " + y); System.out.println("x + y = " + (x + y)); System.out.println("x - y = " + (x - y)); System.out.println("x / y = " + (x / y)); System.out.println("x % y = " + (x % y)); System.out.println("a es " + a + ", b es " + b); System.out.println("a / b = " + (a / b)); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 41 Expresiones Expresiones aritméticas Operadores aritméticos unarios preincremento: ++x postincremento: x++ predecremento: --x postdecremento: x-- Operadores de asignación normal: x = y adición: x += y x = x + y resta: x -= y x = x - y multiplicación: x *= y x = x * y división: x /= y x = x / y Facultad de Informática UCM, 2004 Elementos del lenguaje Java 42

Expresiones Expresiones booleanas Operadores lógicos y lógico: x && y o lógico: x y negación:! x Comparaciones igual: x == y diferente: x!= y mayor que: x > y menor que: x < y mayor o igual que: x >= y menor o igual que: x <= y Para objetos se define el método equals() Facultad de Informática UCM, 2004 Elementos del lenguaje Java 43 Expresiones Expresiones a nivel de bits Operadores a nivel de bits (en enteros) AND: x & y OR: x y XOR: x ^ y Desplazamiento izd: x << y Desplazamiento der: x >> y Llenado de 0 a der: x >>> y complemento de bits: ~x Facultad de Informática UCM, 2004 Elementos del lenguaje Java 44

Expresiones Expresiones Los operadores se evalúan de izquierda a derecha Precedencia de operadores. [] () ++ --! - instanceof new (tipo)expresión * / % + - << >> >>> < > <= >= ==!= & ^ &&? : = += -= /= *= %= ^= &= = <<= >>= >>>= Facultad de Informática UCM, 2004 Elementos del lenguaje Java 45 Conversión de tipos Conversiones implícitas en tipos primitivos, de menor a mayor rango [char byte] -> int -> long -> float -> double Puede haber perdida de significación hacia abajo en la jerarquía de clases Padre p = new Hijo(); Conversiones explícitas Mediante el operador de conversión (casting) (nombredetipo) expresión (nombredeclase) objeto Hijo h = (Hijo) p; Se comprueba en tiempo de ejecución Se puede comprobar usando (h instanceof Padre) Facultad de Informática UCM, 2004 Elementos del lenguaje Java 46

Métodos Determinan lo que se puede hacer con los objetos Pueden ser: Funciones Constructores (cuando se crea un objeto) Finalizadores (cuando se destruye un objeto) Cómo definir un método: Nombre del método Tipo de objeto o tipo primitivo que devuelve (o void) Lista de parámetros Todos los argumentos se pasan por valor Los objetos se pasan por referencia Cuerpo del método Facultad de Informática UCM, 2004 Elementos del lenguaje Java 47 Métodos Métodos public class sitioweb { String nombre; String url; String descripcion; Definición de método imprime() { System.out.println(nombre + " en " + url + " es " + descripcion); Para acceder al método: w.imprime(); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 48

Métodos constructores Inicializan un objeto Se invoca automáticamente cuando new crea un objeto de esa clase Tienen el mismo nombre de su clase No tienen tipo de retorno Pueden sobrecargarse Se puede crear un objeto con distintos tipos de parámetros Pueden llamar al constructor del padre super(parámetros); o a otros constructores de la misma clase this(parámetrospordefecto); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 49 Métodos constructores public class sitioweb { String nombre; String url; String descripcion; tienen el nombre de la clase no tienen tipo de retorno pueden sobrecargarse 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"); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 50

Métodos finalizadores Java tiene recogedor de basura Un objeto se elimina cuando se deja de hacer referencia a él No hay que eliminar los objetos explícitamente en Java no existe delete Al destruir un objeto se puede invocar el método finalize Para hacer limpieza de recursos no Java (recursos externos) Por ejemplo: cerrar conexiones, cerrar ficheros, registrar algún 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; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 51 Instrucciones Las instrucciones son expresiones Java El punto y coma (;) indica el final de una instrucción Declaración de variables Asignación de variables Creación de objetos Coche mibólido; double velocidad; velocidad = 100.00; mibólido = new Coche(); mibólido.acelera(velocidad); Envío de mensajes Facultad de Informática UCM, 2004 Elementos del lenguaje Java 52

Instrucción vacía Simplemente un punto y coma (;) Indica que no se haga nada ; //esto es una instrucción vacía Cuidado dónde se pone! 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 instrucción vacía en el for Facultad de Informática UCM, 2004 Elementos del lenguaje Java 53 Instrucciones Instrucciones básicas Declaración: tipo variable; int x, y = 0, z; boolean b; Asignación: var = expresión; x = y + z; b = true; Grupo de instrucciones: { inst1 inst2... instn { x = y + z; b = true; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 54

Instrucciones Instrucción condicional if if (expresión_booleana) instrucción if (expresión_booleana) instrucción else instrucción 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); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 55 Instrucciones Instrucción condicional switch switch (expresión) { case expresión-constante1: instrucciones case expresión-constante2: instrucciones... default: instrucciones Se tiene que especificar break para salir de la sentencia switch Se puede usar un conjunto de instrucciones para varios casos: case expresión-constantex: case expresión-constantey: case expresión-constantez: instrucciones Facultad de Informática UCM, 2004 Elementos del lenguaje Java 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); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 57 Instrucciones Operador condicional? : prueba? resultadotrue : resultadofalse Ejemplo: int máximo = x < y? x : y ; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 58

Instrucciones Ciclos while (expresión_booleana) instrucción do instrucción while (expresión_booleana) for (instruccion_inicialización; expresión_booleana; instrucción_incremento) instrucción break permite salir del ciclo continue salta a la siguiente iteración Facultad de Informática UCM, 2004 Elementos del lenguaje Java 59 Instrucciones Fin de ejecución de un método return ; // para los métodos void return expresión ; permite salir de cualquier ciclo dentro del método vuelve al punto donde se invocó el método Facultad de Informática UCM, 2004 Elementos del lenguaje Java 60

Arrays Colección de variables, todas del mismo tipo Los elementos pueden ser tipos primitivos u objetos Aunque son objetos, su declaración, creación e inicialización es diferente que para otros objetos Declaración El tipo de variable que tiene un array se especifica al declararlo, añadiendo 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 tamaño en la declaración 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 Facultad de Informática UCM, 2004 Elementos del lenguaje Java 61 Arrays Creación e inicialización de arrays El tamaño de un array se especifica al crearlo con el operador new int A[] = new int[10]; // array de 10 enteros: A[0]..A[9] String[] S; S = new String[10]; Y también puede inicializarse for ( int i=0; i<10; i++ ) S[i]= new String(i); Y ambas cosas a la vez: int[] arraydeenteros = {1,2,3,4,5; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 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 podría haber hecho un array de arrays de diferentes tamaños Facultad de Informática UCM, 2004 Elementos del lenguaje Java 63 Arrays Acceso a los elementos de un array El primer elemento de un array tiene el índice 0 Se comprueba automáticamente los límites del array Si se intenta acceder fuera de los límites del array (entre 0 y length-1), se produce la excepción IndexOutOfBoundsException. Tamaño de un array: miembro length A.length // correcto A.length() // ERROR: no se usan paréntesis for (int i = 0; i < A.length; i++) A[i]=i; Facultad de Informática UCM, 2004 Elementos del lenguaje Java 64

Cadenas de caracteres La clase java.lang.string implementa cadenas Las cadenas son constantes: String s = "hola"; Cambiar una significa construir una nueva Se pueden concatenar con el operador + Todos los objetos tienen el método tostring() Se pueden formatear con valueof() Se comparan con equals() (== es para comparar referencias) Tiene un tratamiento especial por el compilador El compilador se encarga de crear una clase String cuando se encuentra un literal: String uno = "Uno"; String dos = "Dos"; String uno = new String("Uno"); String dos = new String("Dos"); Facultad de Informática UCM, 2004 Elementos del lenguaje Java 65 Cadenas de caracteres La clase StringBuffer permite manipular cadenas Se crea con StringBuffer(NumeroGrande) Luego se usan los métodos insert(), append(), setcharat(),... Al final se llama a tostring() para obtener un String Facultad de Informática UCM, 2004 Elementos del lenguaje Java 66