Saltar al contenido principal

Variables, tipos y constantes

Un programa útil necesita recordar datos: un nombre, una edad, un precio o si una opción está activa. Una variable asocia un nombre con un valor de un tipo concreto.

Declarar, inicializar y reasignar​

int edad;        // declaración
edad = 28; // primera asignación
edad = 29; // reasignación

También podemos declarar e inicializar a la vez:

int edad = 28;

Java comprueba el tipo. int edad = "veintiocho"; no compila porque un texto no es un entero.

Tipos que necesitaremos​

int unidades = 3;               // entero
long poblacion = 8_100_000_000L; // entero grande
double precio = 19.95; // decimal
float descuento = 0.15F; // decimal con menor precisión
boolean disponible = true; // verdadero o falso
char categoria = 'A'; // un carácter
String nombre = "TasteMatch"; // texto

byte y short también representan enteros más pequeños, pero int suele ser la opción práctica para cantidades enteras normales. Para decimales usaremos principalmente double.

String no es un tipo primitivo, pero en Java 0 lo utilizaremos de forma práctica para guardar texto. Observa las comillas: un char usa comillas simples y un String, dobles.

Los guiones bajos de 8_100_000_000L solo facilitan la lectura. La L indica que el literal es long; la F, que el literal es float.

Mostrar y actualizar datos​

public class Perfil {
public static void main(String[] args) {
String nombre = "Lina";
int puntos = 10;

System.out.println(nombre);
System.out.println(puntos);

puntos = 15;
System.out.println(puntos);
}
}

La salida es Lina, 10 y 15, cada valor en una línea. Reasignar puntos sustituye el valor anterior.

Constantes con final​

Si un dato no debe cambiar, decláralo con final:

final double IVA = 0.21;

Después, IVA = 0.10; provoca un error de compilación. Por convención, las constantes se nombran en mayúsculas y con guiones bajos: PRECIO_MAXIMO.

Nombres que ayudan​

Un identificador puede contener letras, números, _ y $, pero no comenzar por un número ni coincidir con una palabra reservada. Prefiere nombres descriptivos en camelCase:

double precioFinal = 24.50;
boolean tieneDescuento = true;

Evita x, dato1 o abreviaturas difíciles cuando el propósito no sea evidente. Java distingue mayúsculas: precio y Precio serían variables diferentes.

Errores habituales​

int cantidad;
System.out.println(cantidad); // no compila: no se ha inicializado

int intentos = 3;
intentos = "cuatro"; // no compila: tipo incompatible

final int MAXIMO = 5;
MAXIMO = 6; // no compila: la constante no cambia

Los límites también importan. Un int admite valores desde −2.147.483.648 hasta 2.147.483.647; para enteros fuera de ese rango, usa long y el sufijo L cuando sea necesario.

Práctica: ficha de un producto​

Representa un producto con nombre, precio, unidades disponibles, categoría y disponibilidad. El IVA debe ser constante. Después cambia las unidades de 8 a 7.

Solución razonada:

public class Producto {
public static void main(String[] args) {
String nombre = "Auriculares";
double precio = 39.95;
int unidades = 8;
char categoria = 'A';
boolean disponible = true;
final double IVA = 0.21;

unidades = 7;

System.out.println(nombre);
System.out.println(precio);
System.out.println(unidades);
System.out.println(categoria);
System.out.println(disponible);
System.out.println(IVA);
}
}

Cada dato tiene un tipo acorde con su uso. unidades puede cambiar; IVA expresa una regla fija del programa.

Predice el estado final​

int puntos = 10;
puntos = 14;
puntos = 12;

Solución: puntos vale 12; cada asignación reemplaza el valor anterior.

Ya podemos representar datos. En la siguiente unidad los combinaremos para calcular, comparar y convertir valores.