Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Variables dentro y fuera de un método

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

30 minutos

Cada sala tiene su pizarra

Imagina el instituto. Cada aula tiene su pizarra, y lo que escribes en una no se ve en otra.

En Java pasa igual. Cada método es un aula con su pizarra. Las variables que creas dentro se ven solo ahí.

Hoy aprendes qué se ve y qué no se ve. Así sabrás qué escribe un programa sin ejecutarlo.

Palabras clave

PalabraQué significaEjemplo
AlcanceEl trozo de programa donde una variable existe y se puede usar.dentro de las llaves
Variable localUna variable creada dentro de un método. Solo vive ahí.int total = 12;
CopiaUn parámetro recibe una copia del dato. Cambiarla no cambia el original.number = number + 1;
LlavesLas marcas { y }. Una variable vive dentro de las llaves donde nace.{ ... }
Nombre repetidoDos métodos pueden usar el mismo nombre. Son variables distintas.total

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una variable nace y muere en sus llaves

Cuando creas una variable dentro de un método, solo ese método la conoce.

Cuando el método termina, la variable desaparece. Otro método no puede verla.

Por eso dos métodos pueden tener una variable llamada igual. Cada una es de su método.

Pruébalo: tres totales distintos

Código: java
public class Main {
    static void barBill() {
        int total = 12;
        System.out.println("Cuenta del bar: " + total);
    }

    static void cinemaBill() {
        int total = 9;
        System.out.println("Cuenta del cine: " + total);
    }

    public static void main(String[] args) {
        int total = 100;
        barBill();
        cinemaBill();
        System.out.println("Tu total en main: " + total);
    }
}

Lo que no se ve da error

Si un método usa una variable de otro método, Java no la encuentra.

No es que valga cero. Es que no existe en esa sala. El programa ni siquiera empieza a ejecutarse.

Se arregla con un parámetro: un método solo conoce lo que le das.

Este programa da error

Código: java
public class Main {
    static void showTotal() {
        // Error: total existe solo en main, no aquí.
        System.out.println(total);
    }

    public static void main(String[] args) {
        int total = 5;
        showTotal();
    }
}

Los parámetros son copias

Cuando llamas a un método con un número, el método recibe una copia.

Si la cambia, el original no cambia. Es como fotocopiar tu apunte y tachar la fotocopia.

Mira el ejemplo con los puntos de un juego.

Pruébalo: dentro y fuera

Código: java
public class Main {
    static void addOne(int number) {
        number = number + 1;
        System.out.println("Dentro: " + number);
    }

    public static void main(String[] args) {
        int points = 5;
        addOne(points);
        System.out.println("Fuera: " + points);

        // ¿Por qué fuera sigue valiendo 5?
    }
}

Ejemplo resuelto: qué vale cada variable

Momentopoints en mainnumber en addOne
Se crea points = 55no existe
Se llama a addOne(points)55, una copia
number = number + 156
Termina addOne5desaparece
Se escribe points5no existe

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Si quieres cambiar el original

Entonces el método devuelve el valor nuevo con return. Y quien lo llamó lo guarda.

Así sí cambia: points = addOne(points);. La copia no cambia el original, pero el resultado se guarda en él.

Pruébalo: guardar lo que devuelve

Código: java
public class Main {
    static int addOne(int number) {
        return number + 1;
    }

    public static void main(String[] args) {
        int points = 5;
        points = addOne(points);
        System.out.println("Ahora tienes " + points + " puntos.");

        // Llama otra vez a addOne y mira cuántos puntos tienes.
    }
}

También los bucles tienen sus llaves

Una variable creada en el paréntesis de un for solo existe dentro de ese for.

Cuando el bucle termina, la i desaparece. Por eso puedes usar i en dos bucles seguidos sin problema.

Repaso rápido

Inténtalo

Repaso rápido

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

4 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.