Tipos de variables:

Primitivas:

  • Sus valores se almacenan en el Stack.
  • int i = 1; Crea una variable en el stack que con el nombre i le pone en binario el valor 1.
  • Sólo puedo acceder al valor de i utilizando el nombre de la variable.

Referencias a objetos.

  • Sus valores se almacenan en el Heap.
  • La variable contiene la dirección en memoria del objeto, y no el propio objeto. Por tanto, es posible modificar un objeto mediante diferentes variables.

Stack y Heap: son dos zonas de memoria diferentes en la JVM.

Ej:
int i = 3;
StringBuffer cadenaModificable = new StringBuffer("Pepe");

tipos de variables

Características de las variables primitivas

TYPE CONTAINS DEFAULT SIZE RANGE
boolean true or false false 1 bit NA
char Unicode character \u0000 16 bits \u0000 to \uFFFF
byte Signed integer 0 8 bits -128 to 127
short Signed integer 0 16 bits -32768 to 32767
int Signed integer 0 32 bits -2147483648 to 2147483647
long Signed integer 0 64 bits -9223372036854775808 to 9223372036854775807
float IEEE 754 floating point 0.0 32 bits ±1.4E-45 to ±3.4028235E+38
double IEEE 754 floating point 0.0 64 bits ±4.9E-324 to ±1.7976931348623157E+308

Problema de conversión de tipos

Al convertir la información de un tipo de dato a otro tipo de dato en el que no cabe dicha información, el valor almacenado se verá modificado.

int int_x = 32767;
int int_y = 32768;
int int_z = 32769;
// El rango de un dato de tipo short llega hasta 32767

short short_x = (short) int_x;
short short_y = (short) int_y;
short short_z = (short) int_z;

System.out.println("1 - Conversión a short de 32767: " + short_x);
System.out.println("2 - Conversión a short de 32768: " + short_y);
System.out.println("2 - Conversión a short de 32769: " + short_z);

byte byte_x = (byte) int_x;
byte byte_y = (byte) int_y;
byte byte_z = (byte) int_z;

System.out.println("3 - Conversión a byte de 32767: " + byte_x);
System.out.println("4 - Conversión a byte de 32768: " + byte_y);
System.out.println("5 - Conversión a byte de 100: " + byte_z);

Output:
1 - Conversión a short de 32767: 32767
2 - Conversión a short de 32768: -32768
2 - Conversión a short de 32769: -32767
3 - Conversión a byte de 32767: -1
4 - Conversión a byte de 32768: 0
5 - Conversión a byte de 100: 1

El rango del tipo de dato short es: -32768 to 32767
El rango del tipo de dato byte es: -128 to 127

Casting

Una primitiva grande puede almacenar la información de una de menor tamaño.

Una primitiva pequeña puede almacenar la información de una de mayor tamaño, pero habrá pérdida de información.

El tipo de la variable apuntadora tiene que ser el mismo o más genérico que el tipo de la variable a la que apunta.

Animal animal = new Gato();

tipos de primitivas

Ejercicios variables

  1. Declarar una variable 'i' de tipo int, una variable 'd' de tipo double y una variable 'c' de tipo char. Asignar un valor a cada una. Mostrar por pantalla el valor de cada variable utilizando tres llamadas a System.out.println(). Tener en cuenta que:
    1. Para dar valor a una variable de tipo double ponemos una "d" al final del valor.
    2. Para dar valor a una variable de tipo char, esta debe ir entre comillas simples.
  2. Intercambiar el contenido de dos variables
    int a = 5;
    int b = 7;
    // aquí hay que poner código
    System.out.println(a); //Debería mostrar 7
    System.out.println(b); //Debería mostrar 5
  1. ¿Qué es Java?
  2. Eclipse
  3. Resolución de problemas
  4. Clases
  5. Objetos
  6. Hola mundo
  7. Comentarios
  8. Variables
  9. Constantes
  10. Operadores
  11. Lectura de datos
  12. Ejercicios con operadores aritméticos
  13. Estructuras de control
  14. Métodos
  15. Modificador static
  16. Arrays
  17. Ejercicio – juego del ahorcado
  18. Ejercicio - tres en raya
  19. Modificadores de acceso
  20. Constructores
  21. Herencia
  22. Polimorfismo
  23. Abstracción
  24. Interfaces
  25. Clases internas
  26. Garbage Collector
  27. String performance
  28. Encapsulación
  29. Contenedores
  30. Genéricos
  31. Ejercicio alta, baja, modificación y consulta en un ArrayList
  32. Ejercicio – juego de la oca
  33. Recorrer un map
  34. Sobreescritura equals
  35. Sobreescritura hashcode
  36. Sobreescritura compareTo
  37. Excepciones
  38. Implementar Serializable
  39. Enumeraciones
  40. Hilos
icono de mandar un mail¡Contacta conmigo!
contacta conmigoPablo Monteserín

¡Hola! ¿En qué puedo ayudarte?