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.