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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Alcance | El trozo de programa donde una variable existe y se puede usar. | dentro de las llaves |
| Variable local | Una variable creada dentro de un método. Solo vive ahí. | int total = 12; |
| Copia | Un parámetro recibe una copia del dato. Cambiarla no cambia el original. | number = number + 1; |
| Llaves | Las marcas { y }. Una variable vive dentro de las llaves donde nace. | { ... } |
| Nombre repetido | Dos 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
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
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
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
| Momento | points en main | number en addOne |
|---|---|---|
| Se crea points = 5 | 5 | no existe |
| Se llama a addOne(points) | 5 | 5, una copia |
| number = number + 1 | 5 | 6 |
| Termina addOne | 5 | desaparece |
| Se escribe points | 5 | no 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
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 preguntasTus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.