Introducción
Programar es darle instrucciones a una computadora de forma precisa y ordenada. La computadora hace exactamente lo que le dices — ni más, ni menos — así que aprender a ser claro y específico es la habilidad más importante que vas a desarrollar.
Java es uno de los lenguajes de programación más usados del mundo. Está detrás de aplicaciones bancarias, apps de Android y sistemas empresariales. Es un buen primer lenguaje porque te enseña a pensar de forma ordenada y sus reglas son estrictas (lo que evita malos hábitos).
¿Qué vas a aprender en este lab?
- Escribir y entender tu primer programa en Java
- Usar variables para almacenar información
- Tomar decisiones con condicionales
- Repetir acciones con bucles
- Organizar código en métodos
Requisitos previos: ninguno. Este lab está pensado para quien empieza desde cero.
0. Tu primer programa: Hola Mundo
Todo programa en Java vive dentro de una clase. La ejecución siempre empieza por el método main.
public class HolaMundo {
public static void main(String[] args) {
System.out.println("¡Hola, mundo!");
}
}
Salida:
¡Hola, mundo!
¿Qué significa cada parte?
| Parte | Qué hace |
|---|---|
public class HolaMundo |
Define una clase llamada HolaMundo. El nombre del archivo debe coincidir: HolaMundo.java |
public static void main |
El punto de entrada del programa. Java lo busca para saber por dónde empezar |
String[] args |
Lista de argumentos que se pueden pasar al programa (por ahora, ignórala) |
System.out.println(...) |
Imprime texto en la consola y salta a la siguiente línea |
Ejercicio 0
Crea un archivo Presentacion.java y escribe un programa que imprima tu nombre, tu edad y lo que te gustaría aprender a programar. Usa tres líneas de System.out.println.
1. Variables y Tipos de Datos
Una variable es un espacio con nombre donde guardas un valor. Piénsalo como una caja con una etiqueta.
En Java debes declarar el tipo de dato antes de usarla. El tipo le dice a Java cuánto espacio reservar en memoria y qué operaciones están permitidas.
Tipos primitivos
int edad = 25; // número entero
double precio = 19.99; // número decimal
boolean activo = true; // verdadero o falso
char inicial = 'J'; // un solo carácter (comillas simples)
String — texto
String no es un tipo primitivo, pero se usa constantísimo:
String nombre = "Julian";
String saludo = "Hola, " + nombre; // concatenación con +
System.out.println(saludo); // Hola, Julian
Reglas para nombres de variables
- Empiezan con letra minúscula:
edad,nombreUsuario - Si tienen varias palabras, usa camelCase:
precioFinal,estaActivo - No pueden empezar con números ni tener espacios
- No uses palabras reservadas de Java (
class,int,public, etc.)
Ver el valor de una variable
int temperatura = 38;
System.out.println("La temperatura es: " + temperatura + "°C");
// La temperatura es: 38°C
Ejercicio 1
Declara variables para almacenar: el título de tu película favorita, su año de estreno, su calificación (con decimales) y si la recomendarías (true/false). Imprímelas todas con un mensaje descriptivo.
2. Operadores
Los operadores te permiten realizar cálculos y comparaciones.
Aritméticos
int a = 10, b = 3;
System.out.println(a + b); // 13 — suma
System.out.println(a - b); // 7 — resta
System.out.println(a * b); // 30 — multiplicación
System.out.println(a / b); // 3 — división entera (descarta el resto)
System.out.println(a % b); // 1 — módulo (resto de la división)
Ojo con la división entera:
10 / 3en Java da3, no3.33. Para obtener decimales, usadouble:10.0 / 3da3.3333...
Relacionales (devuelven true o false)
int x = 5, y = 8;
System.out.println(x == y); // false — igual
System.out.println(x != y); // true — distinto
System.out.println(x < y); // true — menor que
System.out.println(x >= y); // false — mayor o igual
Lógicos
Combinan condiciones:
int edad = 20;
boolean tieneDNI = true;
// && (AND): ambas condiciones deben ser true
System.out.println(edad >= 18 && tieneDNI); // true
// || (OR): al menos una condición debe ser true
System.out.println(edad < 18 || tieneDNI); // true
// ! (NOT): invierte el resultado
System.out.println(!tieneDNI); // false
Asignación compuesta
int contador = 0;
contador += 5; // equivale a: contador = contador + 5
contador++; // equivale a: contador = contador + 1
contador--; // equivale a: contador = contador - 1
Ejercicio 2
Escribe un programa que calcule el precio final de un producto aplicando un 21% de IVA y un 10% de descuento. Imprime el precio original, el descuento aplicado, el IVA y el precio final. Usa double para todos los valores.
3. Condicionales
Los condicionales permiten que tu programa tome decisiones según el valor de una condición.
if / else if / else
int nota = 75;
if (nota >= 90) {
System.out.println("Excelente");
} else if (nota >= 70) {
System.out.println("Aprobado");
} else if (nota >= 50) {
System.out.println("Recuperación");
} else {
System.out.println("Reprobado");
}
// Salida: Aprobado
Java evalúa las condiciones de arriba a abajo y ejecuta el primer bloque que se cumpla. Los demás se saltan.
Condicional anidado
int edad = 20;
boolean tieneLicencia = true;
if (edad >= 18) {
if (tieneLicencia) {
System.out.println("Puede conducir.");
} else {
System.out.println("Tiene la edad, pero necesita licencia.");
}
} else {
System.out.println("No tiene la edad suficiente.");
}
switch
Útil cuando una sola variable puede tomar varios valores específicos:
int diaSemana = 3;
switch (diaSemana) {
case 1: System.out.println("Lunes"); break;
case 2: System.out.println("Martes"); break;
case 3: System.out.println("Miércoles"); break;
case 4: System.out.println("Jueves"); break;
case 5: System.out.println("Viernes"); break;
default: System.out.println("Fin de semana");
}
// Salida: Miércoles
No olvides el
breaken cadacase. Sin él, Java ejecuta también todos los casos siguientes (comportamiento llamado fall-through).
Ejercicio 3
Escribe un programa que reciba la temperatura del día (variable int temperatura) y muestre un mensaje según el rango:
- Menor de 0°C → "Bajo cero, cuidado con el hielo"
- 0–15°C → "Frío, lleva abrigo"
- 16–25°C → "Agradable"
- 26–35°C → "Caluroso"
- Mayor de 35°C → "Calor extremo"
4. Bucles
Los bucles permiten repetir un bloque de código múltiples veces.
for — cuando sabes cuántas veces repetir
for (int i = 1; i <= 5; i++) {
System.out.println("Iteración " + i);
}
// Iteración 1
// Iteración 2
// ...
// Iteración 5
El for tiene tres partes separadas por ;:
- Inicialización:
int i = 1— se ejecuta una sola vez al inicio - Condición:
i <= 5— se verifica antes de cada iteración - Actualización:
i++— se ejecuta después de cada iteración
while — cuando no sabes cuántas veces repetir
int numero = 1;
while (numero <= 100) {
numero *= 2; // duplica el número en cada vuelta
}
System.out.println("Primer número mayor a 100: " + numero);
// Primer número mayor a 100: 128
do-while — ejecuta al menos una vez
int intentos = 0;
do {
System.out.println("Intento " + (intentos + 1));
intentos++;
} while (intentos < 3);
// Intento 1
// Intento 2
// Intento 3
break y continue
// break: sale del bucle inmediatamente
for (int i = 0; i < 10; i++) {
if (i == 5) break;
System.out.println(i); // imprime 0, 1, 2, 3, 4
}
// continue: salta a la siguiente iteración
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) continue; // salta los pares
System.out.println(i); // imprime 1, 3, 5, 7, 9
}
Bucles anidados
// Tabla de multiplicar del 2 al 4
for (int tabla = 2; tabla <= 4; tabla++) {
System.out.println("--- Tabla del " + tabla + " ---");
for (int num = 1; num <= 5; num++) {
System.out.println(tabla + " x " + num + " = " + (tabla * num));
}
}
Ejercicio 4
Escribe un programa que imprima todos los números del 1 al 50 que sean divisibles por 3 pero NO por 5. Pista: usa el operador % para verificar divisibilidad.
5. Métodos
Un método es un bloque de código con nombre que realiza una tarea específica. Permiten reutilizar código sin repetirlo.
Declarar un método
public class Calculadora {
// Método que recibe dos números y devuelve su suma
public static int sumar(int a, int b) {
return a + b;
}
// Método que no devuelve nada (void)
public static void imprimirBienvenida(String nombre) {
System.out.println("Bienvenido, " + nombre + "!");
}
public static void main(String[] args) {
int resultado = sumar(10, 5);
System.out.println("10 + 5 = " + resultado); // 10 + 5 = 15
imprimirBienvenida("Julian"); // Bienvenido, Julian!
}
}
Partes de un método:
| Parte | Ejemplo | Descripción |
|---|---|---|
| Modificadores | public static |
Visibilidad y comportamiento |
| Tipo de retorno | int |
Tipo del valor que devuelve (void si no devuelve nada) |
| Nombre | sumar |
En camelCase, verbo que describe lo que hace |
| Parámetros | (int a, int b) |
Datos de entrada que necesita |
| Cuerpo | { return a + b; } |
Las instrucciones del método |
Múltiples parámetros y retorno
public static double calcularPromedio(double n1, double n2, double n3) {
double suma = n1 + n2 + n3;
return suma / 3;
}
// En main:
double promedio = calcularPromedio(8.5, 7.0, 9.5);
System.out.printf("Promedio: %.2f%n", promedio); // Promedio: 8.33
System.out.printfpermite formatear la salida.%.2fimprime un decimal con 2 cifras.
Ejercicio 5
Crea una clase Utilidades con estos métodos estáticos:
esPar(int n)→ devuelvetruesines paresPrimo(int n)→ devuelvetruesines primofactorial(int n)→ devuelve el factorial den(usa un buclefor)
En main, prueba cada método con varios valores e imprime los resultados.
6. Errores Comunes
Error 1 — Usar una variable sin inicializarla
// Incorrecto
int numero;
System.out.println(numero); // Error de compilación: variable might not have been initialized
// Correcto
int numero = 0;
System.out.println(numero); // 0
Error 2 — División entera cuando necesitas decimales
// Incorrecto
int total = 10;
int personas = 3;
double porPersona = total / personas; // 3.0 (no 3.333...)
// Correcto — fuerza la división decimal
double porPersona = (double) total / personas; // 3.3333...
Error 3 — Comparar Strings con ==
String nombre = "Julian";
// Incorrecto: == compara referencias, no contenido
if (nombre == "Julian") { }
// Correcto: .equals() compara el contenido del texto
if (nombre.equals("Julian")) {
System.out.println("¡Hola, Julian!");
}
Error 4 — Bucle infinito por olvidar la actualización
// Incorrecto: i nunca cambia, el bucle no termina
int i = 0;
while (i < 10) {
System.out.println(i);
// falta: i++;
}
// Correcto
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
Error 5 — Confundir = con ==
int x = 5;
// Incorrecto: asigna 10 a x en lugar de comparar
// if (x = 10) { } // Error de compilación en Java
// Correcto
if (x == 10) {
System.out.println("x es 10");
}
Resumen
| Concepto | Para qué sirve | Ejemplo |
|---|---|---|
| Variables | Guardar datos | int edad = 25; |
| Tipos de datos | Definir qué tipo de valor contiene la variable | int, double, String, boolean |
| Operadores | Calcular y comparar | +, -, ==, && |
| Condicionales | Tomar decisiones | if / else if / else |
| Bucles | Repetir acciones | for, while |
| Métodos | Reutilizar bloques de código | public static int sumar(...) |
Próximos pasos
Con estos fundamentos ya estás listo para el siguiente nivel:
- Programación Orientada a Objetos: clases, objetos, herencia y polimorfismo
- Arrays: guardar múltiples valores del mismo tipo en una sola variable
- Colecciones:
ArrayListyHashMappara trabajar con grupos de datos de forma flexible - Manejo de errores:
try-catchpara que tu programa no falle ante lo inesperado