Descargar

Programación avanzada en Java

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    El lenguaje Java

    edu.red

    Características principales (I) Lenguaje interpretado. Fuertemente tipado. Sintaxis similar a C/C++. Sin punteros: Garbage collection. 100% portable. Integra librearías estándar para: Interfaces de usuario. Objetos distribuidos. Threads.

    edu.red

    Características principales (y II) Ejecutable desde navegadores web. Origen: Aumento de HTML para conseguir páginas Web dinámicas. Versiones: 1995 – JDK 1.0 1997 – JDK 1.1 … 2004 – JDK 1.5

    edu.red

    Desarrollo en Java Java Development Kit (JDK): Java Runtime Environment (JRE): Java Virtual Machine. Java API: lenguaje básico y librerías estándar. Compilador a bytecode. Otras herramientas: Debuggers. Applet viewer. Compiladores RMI …

    edu.red

    Compilación e interpretación class Ejemplo { … }

    class Aux { … }

    Ejemplo.java Compilador Java Ejemplo.class Aux.class Java Virtual Machine JVM

    edu.red

    Comparativa: Java vs. C++ (I) Interpretado

    Portable

    Todo memoria dinámica Garbage collection No existen punteros

    Todos los métodos virtuales

    No hay herencia múltiple

    Información sobre clases en tiempo de ejecución.

    Tratamiento genérico de tipos (wrappers).

    Java C++ Compilado

    Aspectos no portables

    Memoria automática y dinámica Gestión del programador Existen punteros

    No todos los métodos virtuales

    Hay herencia múltiple

    Información muy escasa (dynamic_cast).

    Punteros a void.

    edu.red

    Comparativa: Java vs. C++ (y II) Soporte estándar para interfaces: AWT, SWING

    Soporte estándar para concurrencia

    Soporte estándar para objetos distribuidos

    Ejecutable en navegadores web

    Homogeneidad del lenguaje

    Lenguaje bien diseñado

    Java C++ No incluido en el lenguaje: Microsoft MFC, Borland OWL…

    No incluido en el lenguaje

    No incluido en el lenguaje: CORBA, ActiveX

    No ejecutable por navegadores

    Múltiples sintaxis

    Compatibilidad con C

    edu.red

    Elementos del lenguaje

    edu.red

    Aspectos léxicos Ignora múltiples espacios en blanco Sentencias separadas por “;”. Comentarios: /* … */ ? Múltiples líneas de comentario // ? Una única línea de comentario Case – sensitive. Convenios de nomenclatura: Clases con mayúscula. Métodos y variables con minúscula. etc…

    edu.red

    Valores y variables Tipos básicos:

    Variables y literales: Declaración y utilización de variables y literales similar a C/C++. byte 1 byte char 2 bytes (sin signo, caracteres Unicode, incluyen los ASCII) short 2 bytes int 4 bytes long 8 bytes float 4 bytes double 8 bytes boolean 1 bit (true ó false, no compatible con tipos numéricos)

    edu.red

    Compatibilidad entre tipos

    byte b = 42; char c = 'a'; // también válido: c = 97; short s = 1024; int i = 50000; long l = 120000; float f = 5.67f; double d = .1234; double result = (f*b) + (i/c) – (d*s); Ensanchar: automático f = c; d = s; f = l; Estrechar: cast explícito c = (char) i; b = (byte) d; f = (float) d; char: cast explícito s = (short) c; c = (char) s; c = (char) b;

    edu.red

    Operadores En total hay 46 operadores. Numéricos: +, -, *, /, %, +=, -=, *=, /=, %=, –, ++ Lógicos: &&, ||, ! Operadores de bit: &, |, ^, ~, >>, << Relacionales: >, <, >=, <=, ==, != Condicional: If-then-else: (condicion) ? acción1 : acción2

    edu.red

    Precedencia de operadores ( ) [ ] . ++ — ~ ! new * / % + – >> >>> << > >= < <= instanceof == != & ^ | && || ? : = += *= -= /= (Gp:) Orden de ejecución de operadores

    (Gp:) Igualdad de precedencia

    edu.red

    Arrays Declaración:

    int a[]; a = new int[3]; int b[] = {1, 2, 3, 4}; Reserva de tamaño: Asignación de valores:

    a[1] = 7; b = a; Errores:

    a[6] = 7; // Fuera del rango a = {1, 2, 3}; // Sólo válido en la inicialización int c[5]; // La dimensión sólo al hacer new char str[] = “hola”; // Los Strings no son arrays en Java

    edu.red

    Arrays multidimensionales float a[][] = new float [4][3]; float m[][] = new float [4][]; m[0] = new float [2]; m[1] = new float [5]; m[2] = new float [m[1].length]; float x[] = {4.5, 8/3, m[2][1]}; m[3] = x; // O cualquier expresión que devuelva un float[] a[0] = m[1]; // Las variables de array no son constantes a[2, 1] = 7.3 // Error de sintaxis: a[2][1]

    edu.red

    Expresiones condicionales Dos tipos de condicionales. if (condición1) acción1 [else acción2] [else if (condición2)… switch (expresión) { case valor1: … break;

    case valor2: … break;

    default: … } (Gp:) byte, char, short o int

    (Gp:) Tienen que ser literales

    Partes: 1, 2
    Página siguiente