Aprende Java desde Cero

Una guía completa, minimalista y elegante para principiantes en la programación

12
Temas Principales
40+
Ejemplos de Código
1
Lenguaje Increíble
Comenzar a Aprender ↓

📖 Introducción a Java

Conoce qué es Java y por qué es uno de los lenguajes más populares del mundo

¿Qué es Java?

Java es un lenguaje de programación versátil, potente y ampliamente utilizado. Fue creado en 1995 por James Gosling en Sun Microsystems con el objetivo de ser un lenguaje seguro, portable y orientado a objetos.

✅ Multiplataforma

Escribe una vez, ejecuta en cualquier lugar. Java funciona en Windows, Mac y Linux.

✅ Orientado a Objetos

Permite organizar el código en estructuras claras y reutilizables usando clases y objetos.

✅ Fuerte Seguridad

Java gestiona automáticamente la memoria y proporciona protección contra errores comunes.

✅ Comunidad Enorme

Millones de desarrolladores, librerías infinitas y soporte constante.

💡 Curiosidad: Java es utilizado por el 99% de las empresas Fortune 500 a nivel mundial.

Instalación y Configuración

Para comenzar a programar en Java, necesitas instalar el JDK (Java Development Kit).

1

Descarga el JDK

Ve a oracle.com/java o descarga OpenJDK desde adoptopenjdk.net

2

Instala el JDK

Sigue el instalador para tu sistema operativo

3

Verifica la Instalación

Abre terminal y escribe: java -version

4

Escribe tu Primer Programa

Crea un archivo y comienza a programar

Primer Programa: Hola Mundo

java
public class HolaMundo {
    public static void main(String[] args) {
        System.out.println("¡Hola Mundo!");
    }
}

Para ejecutar este programa:

  1. Guarda como HolaMundo.java
  2. En terminal: javac HolaMundo.java
  3. Luego: java HolaMundo

📦 Variables en Java

Aprende a almacenar y manipular información en tu programa

¿Qué es una Variable?

Una variable es un contenedor que almacena un valor. Es como una caja donde guardamos información para usarla después.

java
int edad = 25;        // Variable de tipo entero
double altura = 1.75;   // Variable de tipo decimal
String nombre = "Juan";  // Variable de tipo texto
boolean activo = true;   // Variable de tipo booleano
✨ Tips:
  • Los nombres de variables deben empezar con minúscula
  • No pueden tener espacios ni caracteres especiales
  • Usa nombres descriptivos (edad, no x)

Ejemplo Práctico: Información Personal

java
public class MiPerfil {
    public static void main(String[] args) {
        // Declaramos variables
        String nombre = "Ana";
        int edad = 22;
        double promedio = 8.5;
        
        // Mostramos la información
        System.out.println("Nombre: " + nombre);
        System.out.println("Edad: " + edad);
        System.out.println("Promedio: " + promedio);
    }
}

Salida:

Nombre: Ana
Edad: 22
Promedio: 8.5

🔢 Tipos de Datos Primitivos

Conoce los diferentes tipos de información que Java puede manejar

Tipos Numéricos

int
Números enteros: -100, 0, 25, 9999
double
Números decimales: 3.14, -0.5, 99.99
float
Decimales pequeños: 2.5f
long
Enteros grandes: 999999999L
java
int estudiantes = 150;
double pi = 3.14159;
float gravedad = 9.8f;
long habitantes = 8000000000L;

Otros Tipos de Datos

String
Texto: "Hola", "Java es genial"
boolean
true o false (verdadero o falso)
char
Un solo carácter: 'A', 'x', '!'
java
String ciudad = "Madrid";
boolean esJueves = true;
char inicial = 'J';
⚠️ Recuerda: String se escribe con mayúscula inicial. Es un tipo especial de dato.

➕ Operadores en Java

Realiza cálculos y comparaciones con variables

Operadores Aritméticos

+
Suma
5 + 3 = 8
-
Resta
10 - 4 = 6
*
Multiplicación
6 * 7 = 42
/
División
20 / 4 = 5
%
Módulo (residuo)
10 % 3 = 1
++
Incremento
x++ aumenta x en 1
java
int a = 10;
int b = 3;

System.out.println(a + b);   // 13
System.out.println(a - b);   // 7
System.out.println(a * b);   // 30
System.out.println(a / b);   // 3
System.out.println(a % b);   // 1

Operadores de Comparación

==
Igual a
5 == 5 → true
!=
No igual a
5 != 3 → true
<
Menor que
3 < 5 → true
>
Mayor que
7 > 5 → true
<=
Menor o igual
5 <= 5 → true
>=
Mayor o igual
10 >= 5 → true
java
int x = 15;
int y = 20;

System.out.println(x == y);  // false
System.out.println(x < y);   // true
System.out.println(x != y);  // true

Operadores Lógicos

&&
Y (AND)
true && true = true
||
O (OR)
true || false = true
!
NO (NOT)
!true = false
java
int edad = 25;
int dinero = 5000;

// Los dos deben ser verdaderos
if (edad >= 18 && dinero > 1000) {
    System.out.println("Puede entrar a la discoteca");
}

🔀 Condicionales: if, else if, else

Toma decisiones en tu programa según diferentes condiciones

Estructura if - else

Los condicionales permiten que tu programa ejecute diferentes códigos según cierta condición.

java
int edad = 16;

if (edad >= 18) {
    System.out.println("Eres mayor de edad");
} else {
    System.out.println("Eres menor de edad");
}
Eres menor de edad

Ejemplo: Calificaciones

java
int calificacion = 85;

if (calificacion >= 90) {
    System.out.println("A - Excelente");
} else if (calificacion >= 80) {
    System.out.println("B - Muy Bien");
} else if (calificacion >= 70) {
    System.out.println("C - Bien");
} else {
    System.out.println("F - Insuficiente");
}
B - Muy Bien

Switch: Para Múltiples Opciones

java
int dia = 3;

switch (dia) {
    case 1:
        System.out.println("Lunes");
        break;
    case 2:
        System.out.println("Martes");
        break;
    case 3:
        System.out.println("Miércoles");
        break;
    default:
        System.out.println("Día inválido");
}
Miércoles

🔁 Bucles: Repetir Código

Ejecuta bloques de código múltiples veces de forma automática

Bucle for: Repetición Controlada

El bucle for es perfecto cuando sabes cuántas veces necesitas repetir algo.

java
// Imprime números del 1 al 5
for (int i = 1; i <= 5; i++) {
    System.out.println("Número: " + i);
}
Número: 1
Número: 2
Número: 3
Número: 4
Número: 5

Tabla de Multiplicar

java
for (int i = 1; i <= 10; i++) {
    System.out.println("5 × " + i + " = " + (i * 5));
}
5 × 1 = 5
5 × 2 = 10
5 × 3 = 15
... y así hasta 10

Bucle while: Mientras se Cumpla la Condición

java
int contador = 1;

while (contador <= 3) {
    System.out.println("Contador: " + contador);
    contador++;
}
Contador: 1
Contador: 2
Contador: 3

Bucle do-while: Al Menos Una Vez

Este bucle ejecuta el código una vez antes de verificar la condición.

java
int x = 1;

do {
    System.out.println("x = " + x);
    x++;
} while (x <= 3);
x = 1
x = 2
x = 3

📋 Arrays: Listas de Datos

Almacena múltiples valores del mismo tipo en una sola variable

¿Qué es un Array?

Un array es una colección de elementos del mismo tipo almacenados en una sola variable. Es como tener varios compartimentos en una caja.

java
// Declarar un array de 5 números enteros
int[] numeros = {10, 20, 30, 40, 50};

// Acceder a elementos específicos
System.out.println(numeros[0]);  // Imprime: 10
System.out.println(numeros[2]);  // Imprime: 30
📌 Importante: Los arrays comienzan en índice 0. El primer elemento está en posición [0], no [1].

Listas de Estudiantes

java
String[] estudiantes = {"Juan", "María", "Pedro", "Ana"};

// Recorrer el array con for
for (int i = 0; i < estudiantes.length; i++) {
    System.out.println(estudiantes[i]);
}
Juan
María
Pedro
Ana

Operaciones con Arrays

java
int[] calificaciones = {90, 85, 92, 88};

// Calcular suma
int suma = 0;
for (int cal : calificaciones) {
    suma += cal;
}

// Calcular promedio
double promedio = suma / (double) calificaciones.length;

System.out.println("Promedio: " + promedio);
Promedio: 88.75

⚙️ Métodos: Funciones Reutilizables

Agrupa código en bloques que puedes usar múltiples veces

¿Qué es un Método?

Un método es un conjunto de instrucciones que realiza una tarea específica. Es como una receta que puedes seguir cuantas veces quieras.

java
// Definir un método que suma dos números
public static int sumar(int a, int b) {
    return a + b;
}

// Usar el método
int resultado = sumar(5, 3);
System.out.println(resultado);  // Imprime: 8

Métodos sin Retorno

java
// Método que no retorna nada (void)
public static void saludar(String nombre) {
    System.out.println("¡Hola, " + nombre + "!");
}

// Llamar al método
saludar("Carlos");
¡Hola, Carlos!

Calculadora Simple

java
public class Calculadora {
    public static double sumar(double a, double b) {
        return a + b;
    }

    public static double restar(double a, double b) {
        return a - b;
    }

    public static double multiplicar(double a, double b) {
        return a * b;
    }

    public static void main(String[] args) {
        System.out.println(sumar(10, 5));       // 15.0
        System.out.println(restar(20, 8));      // 12.0
        System.out.println(multiplicar(6, 7));  // 42.0
    }
}

🏗️ Clases y Objetos: POO

Aprende la base de la Programación Orientada a Objetos

¿Qué es una Clase?

Una clase es un plano o plantilla para crear objetos. Define qué propiedades y comportamientos tiene un objeto.

java
public class Persona {
    // Atributos (propiedades)
    public String nombre;
    public int edad;
    public String profesion;

    // Constructor (inicializa el objeto)
    public Persona(String nombre, int edad, String profesion) {
        this.nombre = nombre;
        this.edad = edad;
        this.profesion = profesion;
    }

    // Método
    public void presentarse() {
        System.out.println("Hola, me llamo " + nombre);
    }
}

Crear y Usar Objetos

java
public class Main {
    public static void main(String[] args) {
        // Crear objeto (instancia) de la clase Persona
        Persona p1 = new Persona("Juan", 28, "Ingeniero");
        Persona p2 = new Persona("Ana", 25, "Diseñadora");

        // Usar los objetos
        p1.presentarse();
        p2.presentarse();

        // Acceder a atributos
        System.out.println(p1.nombre + " tiene " + p1.edad + " años");
    }
}
Hola, me llamo Juan
Hola, me llamo Ana
Juan tiene 28 años

Ejemplo: Cuenta Bancaria

java
public class CuentaBancaria {
    private String titular;
    private double saldo;

    public CuentaBancaria(String titular, double saldoInicial) {
        this.titular = titular;
        this.saldo = saldoInicial;
    }

    public void depositar(double cantidad) {
        if (cantidad > 0) {
            saldo += cantidad;
            System.out.println("Depósito exitoso. Saldo: " + saldo);
        }
    }

    public void retirar(double cantidad) {
        if (cantidad > 0 && cantidad <= saldo) {
            saldo -= cantidad;
            System.out.println("Retiro exitoso. Saldo: " + saldo);
        } else {
            System.out.println("Fondos insuficientes");
        }
    }

    public double getSaldo() {
        return saldo;
    }
}

🧬 Herencia: Reutilizar Código

Las clases pueden heredar propiedades de otras clases

¿Qué es la Herencia?

La herencia permite que una clase hija reutilice las propiedades y métodos de una clase padre. Es una forma de crear jerarquías de clases.

java
// Clase padre (superclase)
public class Animal {
    protected String nombre;

    public void dormir() {
        System.out.println(nombre + " está durmiendo");
    }
}

// Clase hija (subclase)
public class Perro extends Animal {
    public void ladrar() {
        System.out.println(nombre + " ladra: ¡Guau!");
    }
}

Usando la Herencia

java
public class Main {
    public static void main(String[] args) {
        Perro miPerro = new Perro();
        miPerro.nombre = "Max";

        // Métodos heredados
        miPerro.dormir();  // De Animal

        // Métodos propios
        miPerro.ladrar();  // De Perro
    }
}
Max está durmiendo
Max ladra: ¡Guau!

Ejemplo Completo: Vehículos

java
public class Vehiculo {
    protected String marca;
    protected int velocidad;

    public Vehiculo(String marca) {
        this.marca = marca;
        this.velocidad = 0;
    }

    public void acelerar() {
        velocidad += 10;
    }
}

public class Coche extends Vehiculo {
    public Coche(String marca) {
        super(marca);
    }

    public void mostrarVelocidad() {
        System.out.println(marca + " va a " + velocidad + " km/h");
    }
}

🔒 Encapsulamiento: Proteger Datos

Controla el acceso a los atributos de tus clases

¿Por Qué Encapsular?

El encapsulamiento te permite ocultar los detalles internos de una clase y controlar cómo se accede a sus datos mediante getters y setters.

java
public class Estudiante {
    // Atributo privado - no se puede acceder directamente
    private String nombre;
    private double promedio;

    // Getter - método para obtener el valor
    public String getNombre() {
        return nombre;
    }

    // Setter - método para establecer el valor con validación
    public void setNombre(String nombre) {
        if (nombre != null && !nombre.isEmpty()) {
            this.nombre = nombre;
        }
    }

    public double getPromedio() {
        return promedio;
    }

    public void setPromedio(double promedio) {
        if (promedio >= 0 && promedio <= 10) {
            this.promedio = promedio;
        }
    }
}
Niveles de acceso:
  • public - Accesible desde cualquier lugar
  • private - Solo dentro de la clase
  • protected - En la clase y sus subclases

Usando Getters y Setters

java
Estudiante est = new Estudiante();

// Usando setters
est.setNombre("Luis");
est.setPromedio(8.5);

// Usando getters
System.out.println(est.getNombre());      // Luis
System.out.println(est.getPromedio());    // 8.5
Luis
8.5

🚀 Proyecto Práctico: Sistema de Tienda

Aplica todo lo aprendido en un proyecto real

Descripción del Proyecto

Crearemos un sistema simple de tienda online que contenga productos, carrito de compras y cálculo de total.

java
public class Producto {
    private String nombre;
    private double precio;
    private int cantidad;

    public Producto(String nombre, double precio, int cantidad) {
        this.nombre = nombre;
        this.precio = precio;
        this.cantidad = cantidad;
    }

    public double getSubtotal() {
        return precio * cantidad;
    }

    public void mostrar() {
        System.out.println(nombre + " - $" + precio + " x" + cantidad + " = $" + getSubtotal());
    }
}

Clase Carrito

java
import java.util.ArrayList;

public class Carrito {
    private ArrayList<Producto> productos;
    private double total;

    public Carrito() {
        productos = new ArrayList<Producto>();
        total = 0;
    }

    public void agregarProducto(Producto p) {
        productos.add(p);
        total += p.getSubtotal();
    }

    public void mostrarCarrito() {
        System.out.println("=== CARRITO DE COMPRAS ===");
        for (Producto p : productos) {
            p.mostrar();
        }
        System.out.println("TOTAL: $" + total);
    }
}

Usando el Sistema

java
public class Main {
    public static void main(String[] args) {
        Carrito miCarrito = new Carrito();

        // Crear productos
        Producto p1 = new Producto("Laptop", 1200, 1);
        Producto p2 = new Producto("Mouse", 25, 2);
        Producto p3 = new Producto("Teclado", 75, 1);

        // Agregar al carrito
        miCarrito.agregarProducto(p1);
        miCarrito.agregarProducto(p2);
        miCarrito.agregarProducto(p3);

        // Mostrar carrito
        miCarrito.mostrarCarrito();
    }
}
=== CARRITO DE COMPRAS ===
Laptop - $1200.0 x1 = $1200.0
Mouse - $25.0 x2 = $50.0
Teclado - $75.0 x1 = $75.0
TOTAL: $1325.0

Consejos para Mejorar el Proyecto

📌 Agregar más características: Descuentos, cupones de promoción, historial de compras
🔐 Validaciones: Verificar que los precios sean positivos, cantidades válidas
💾 Persistencia: Guardar datos en archivos o base de datos
🎨 Interfaz Gráfica: Crear una interfaz visual con Swing o JavaFX
🧪 Pruebas: Escribir unit tests para verificar que todo funciona correctamente

🎓 Resumen y Próximos Pasos

Felicidades por completar esta guía

Conceptos Aprendidos

Ahora entiendes las bases de Java: variables, tipos de datos, operadores, control de flujo, arrays, métodos y programación orientada a objetos.

🚀

Próximos Desafíos

Explora Collections, excepciones, manejo de archivos, bases de datos, frameworks como Spring Boot y desarrollo de aplicaciones web.

💪

Práctica Constante

La mejor forma de aprender es practicando. Crea pequeños proyectos, participa en plataformas como LeetCode y contribuye a código abierto.

¡Excelente trabajo! Ahora tienes una base sólida en Java. Recuerda: la programación es como un idioma - se aprende practicando constantemente. Sigue creando proyectos, experimenta, comete errores y aprende de ellos. ¡El camino hacia ser un gran desarrollador comienza aquí!