style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Java para principiantes (Ambito o alcance de las variables en Java)

Hola a todos, en mi blog quiero ayudar a varios jóvenes que se inician en el mundo de la programación en Java, así que he creado algunos post que quiero compartir con ustedes, esto con el fin de obtener críticas y consejos para mejorarlo, sin más preámbulo acá esta el artículo:

El alcance de las variables es una de las consultas que más se presentan en los blogs, adicionalmente son la causa de dolores de cabeza de algunos desarrolladores novatos, por lo tanto, hemos creado este post con el fin de explicar de una forma clara cual debe ser el comportamiento de las variables locales, globales, de clase de método etc.

Inicialmente crearemos una clase con el siguiente código:

public class EjemploAmbito {
 
     //Declaración de variable de clase
     private int edad;
 
     //Declaración del método main
     public static void main(String[] args) {
          EjemploAmbito ambito = new EjemploAmbito();
          ambito.setEdad(25);
          System.out.println("La edad es " + ambito.getEdad());
     }
     //Declaración del getter de edad
     public int getEdad() {
          return edad;
     }
     //Declaración del setter de edad
     public void setEdad(int edad) {
          this.edad = edad;
     }
}

Al ejecutar la clase se obtiene:

run:
La edad es 25
BUILD SUCCESSFUL (total time: 0 seconds)

En el código se ve como se ha declarado una variable dentro de la clase pero por fuera de los métodos, también se puede ver que se crearon 2 métodos que usan la variable edad, uno para asignar un valor y otro para leer el valor de la variable. Dentro del main se crea un objeto de tipo EjemploAmbito y se llaman los métodos creados, con el fin de asignar un valor y luego imprimirlo en pantalla.

Esta variable, por ser de la clase, puede ser empleada dentro de toda la clase, por todos los métodos, pues tiene alcance de clase o global.

Vamos a crear un nuevo método en la clase que se encargará de validar si la persona es mayor de edad o no:

public String mayorDeEdad(int edad){
//Declaración de variable faltante que indica cuantos años faltan para ser mayor de edad
     int faltante;
     faltante = 0;
 
     if(edad >= 18){
          return "Eres mayor de edad";
     }
     else{
          faltante = 18 - edad;
          return "Te faltan " + faltante + " años para ser mayor";
     }
}

En este método hemos creado una variable “faltante”, que nos indica la cantidad de años que le faltan a una persona para ser mayor de edad, esta variable es local del método, es decir, si la usamos fuera del método el compilador de java nos indicará que hay un error porque no ha sido declarada la variable, aunque esta se encuentre declarada en el método.

Comprobemos con un ejemplo lo explicado en el párrafo anterior, modifiquemos nuestra clase para que quede de la siguiente forma:

Netbeans te hace varias propuestas para solucionar el error, al hacer clic sobre el bombillo con un signo de admiración rojo que se ubica a la izquierda, justo sobre la numeración de las líneas, sin embargo, la solución en este caso es no llamar esa variable, es llamar el método “mayorDeEdad” como se hace en la linea 22 de la imagen.

Es importante que como las variables locales no las inicializa un constructor, el desarrollador debe inicializarlas antes de usarlas, para prevenir errores, es una buena práctica inicializarlas siempre, sea fuera o dentro de un método, ya sea con el constructor o como en el ejemplo que mostramos, en el que justo luego de crearla se le asigna el valor de cero.

Este concepto de variables locales se aplica para todos los bloques de código que se creen, ciclos for, if, switch, while, etc; si queremos usar una variable en toda la clase la declaramos fuera de un método o bloque de código, normalmente justo después de la declaración de la clase y antes de la declaración de los constructores, esto para que el código se vea más ordenado y fácil de leer.

Espero que todo esta claro sobre el scope o ámbito de las variables.

Agradezco sus opiniones y aportes.

SoftMAS
www.soft-mas.com

AdjuntoTamaño
Captura-de-pantalla-2013-10-06-a-las-14.40.04.png28 KB

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">