Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Una variable es un espacio de memoria cuya información puede variar durante la ejecución de la aplicación.
En java las variables son altamente tipadas.
Declaración:
int n;
int a,b,c;
<tipo> <identificador>;
<tipo> <identificador_1>, <identificador_2>...;
Asignación:
numero = 42;
<variable> = <expresión>;
La parte izquierda será una variable
La parte derecha puede ser un literal, una variable, una función o una combinación de todos.
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 c = new StringBuffer(«Pepe»);
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 del int 32767: " + short_x); // Conversión a short de 32767: 32767
System.out.println("2 - Conversión a short del int 32768: " + short_y); // Conversión a short de 32768: -32768
System.out.println("2 - Conversión a short del int 32769: " + short_z); // Conversión a short de 32769: -32767
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 del int 32767: " + byte_x); // Conversión a byte de 32767: -1
System.out.println("4 - Conversión a byte del int 32768: " + byte_y); // Conversión a byte de 32768: 0
System.out.println("5 - Conversión a byte del int 100: " + byte_z); // Conversión a byte de 100: 1
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();
Ejercicios variables
1. Declara una variable de tipo entero y asígnale un valor.
int n = 7;
2. Declara una variable de tipo texto y asígnale un valor.
String txt = "Hola";
3. Declara una variable de tipo decimal y asígnale un valor.
float n = 3.4f;
4. Asigna el valor de la variable a a la variable b.
int a;
a = 7;
int b; // Sólo hay que modificar esta línea
System.out.println(b); // debería mostrar 7
int a;
a = 7;
int b = a;
System.out.println(b);
5. Modifica las siguientes declaraciones de variables para que sean camelCase.
String TituloDeLaPelicula;
String camelCaseBienPuesto;
int EDaddelMonstruo;
String tituloDeLaPelicula;
String camelCaseBienPuesto;
int edadDelMonstruo;
6. ¿Cuanto valor tendrá i después de ejecutar el siguiente código?
int i = 7;
i = 5;
i = 3;
System.out.println(i); // ¿Cuánto valdrá i?
i = 3
7. 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:
Para dar valor a una variable de tipo double ponemos una «d» al final del valor.
Para dar valor a una variable de tipo char, esta debe ir entre comillas simples.
8. 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