miércoles, 9 de febrero de 2011

C1, 04/02/11: Bloque I.3: Tipos de datos

  • Introducción

Existen dos tipos de datos en Java, los tipos primitivos (int, float, char,...) y los tipos referencia con los que accedemos a los objetos.


La declaración y ámbito de las variables es similar a las de C/C++.


Debido a las mejoras introducidas con Java ciertos operadores han desaparecido dando lugar a otros.


De igual modo, uso de arrays de objeto es distinto.



  1. Tipos de datos primitivos











  2. TipoDefinición
    booleantrue o false
    charCarácter Unicode de 16 bits
    byteEntero en complemento a dos con signo de 8 bits
    shortEntero en complemento a dos con signo de 16 bits
    int Entero en complemento a dos con signo de 32 bits
    long Entero en complemento a dos con signo de 64 bits
    float Real en punto flotante según la norma IEEE 754 de 32 bits
    double Real en punto flotante según la norma IEEE 754 de 64 bits


  3. Tipos de datos referencia

  4. Veamos este apartado con un ejemplo:



    Punto unPunto = new Punto(); // "unPunto" apunta/referencia a un objeto de tipo "Punto"
    unPunto.print(); //Imprime por pantalla el objeto "Punto" desde la referencia "unPunto"
    Punto otroPunto = unPunto; //"otroPunto" apunta al mismo objeto que "unPunto", es decir, apunta al objeto "Punto"
    otroPunto.setX(1.0f); //Se modifica el objeto "Punto" a partir de su referencia "otroPunto". Como "unPunto" también apunta al mismo objeto si accedemos a "unPunto" obtendremos el mismo resultado.
    otroPunto.setY(2.0f); //Se modifica el objeto "Punto" a partir de su referencia "otroPunto". Como "unPunto" también apunta al mismo objeto si accedemos a "unPunto" obtendremos el mismo resultado.
    unPunto.print(); //Imprimimos por pantalla "unPunto" para comprobar que efectivamente está apuntando al mis objeto que "otroPunto".


    Ejemplo del recolector de basura que utiliza Java. De este modo no tenemos que preocuparnos de eliminar los objetos que pierdan la referencia, internamente Java lo hará por nosotros:



    Ejemplo 1:



    Punto unPunto = new Punto(1.0f, 2.0f);
    Punto otroPunto = new Punto(1.0f, -1.0f);
    unPunto = new Punto(2.0, 2.0f);
    // El punto (1.0f, 2.0f) se pierde
    otroPunto = null;
    // El punto (1.0f, -1.0f) se pierde



    Ejemplo 2:



    Punto unPunto = new Punto(1.0f, 2.0f);
    Punto otroPunto = new Punto(1.0f, -1.0f);
    unPunto = new Punto(2.0, 2.0f);
    // El punto (1.0f, 2.0f) se pierde
    otroPunto = null;
    // El punto (1.0f, -1.0f) se pierde Todos los "puntos" perdidos se encargará el recolector de basura de eliminarlos.


  5. Declaración de variables. Convenciones


  6. Bien



    int entero = 0;
    Punto punto = new Punto();


    Mal



    float 3reales;
    Punto índigo;


  7. Ámbito de las variables


  8. El ámbito al igual que en C/C++ va de dentro a afuera, es decir, se puede acceder a variables desde bloques internos a otros externos, pero no al revés.



    Operadores. Precedencia


    El conjunto de operadores es similar a C++.


    Los () cambian la precedencia.


    No hay operadores sobre punteros:


    Dirección / Referencia.


    Contenido.


    Sizeof().



    Asignación: =


    Aritméticos:


    Unarios: +, -, ++, --


    Binarios: +, -, *, / %


    Ternarios: ?, ejemplo: a = (x


    Abreviaturas: +=, -=, *=, /=, %=


    Relacionales: ==, !=, <, <=, >, >=


    Lógicos: !, &&, ||, ^, & |


    Conversión: ().



  9. Arrays

    • Unidemensionales:


    int arrayDeEnteros[] = null;
    // Declara un array de enteros
    Punto arrayDePuntos[] = null;
    // Declara un array de referencias a Puntos
    arrayDeEnteros = new int[100];
    // Crea el array con espacio para 100 enteros
    arrayDePuntos = new Punto[100];
    /* Crea el array con espacio para
    100 referencias a Punto */
    for(int i = 0; i <>
    arrayDePuntos[i] = new Punto();


    El atributo length de un array monodimensional,nos devuelve su tamaño:



    int array[] = new int[10];
    System.out.println(“Longitud del array:” +
    array.length);
    // Muestra Longitud del array: 10

    • Multidimensionales:


    // Declaramos una matriz
    Punto matriz[][] = new Punto[3][3];
    // Declaramos e iniciamos una fila
    Punto fila[] = {new Punto(), new Punto(1.0f, 1.0f),
    new Punto(2.0f, 2.0f)};
    matriz[0] = fila[];
    // matriz[0] y fila hacen referencia al
    // mismo array


  10. Cadenas de caracteres


  11. Las cadenas de caracteres se pueden manejar como en C++. Pero es más cómodo utilizar la clase especializada String.



    String frase = "Esta cadena es una frase ";
    String larga =frase + "que se puede convertir en una frase larga.";
    System.out.println(larga); //Para sacar por pantalla

No hay comentarios:

Publicar un comentario