Tu portal de
formación online

Infórmate
Inicio » Catálogo » Curso de Programación en Java » Alcance de variables

Curso de Programación en Java

Alcance de variables

El alcance de una variable indica la parte del programa donde puede utilizarse.

En base al alcance, las variables se clasifican en:

  • Variables locales
  • Variables de instancia

Durante el desarrollo del tema se irán viendo las características que definen a los diversos tipo de variables. Todos los códigos en c:\cursojava\tema2 o en el workspace correspondiente si se emplea Eclipse.

Variables locales

Se declaran dentro de métodos o de instrucciones asociadas a bucles for, estructuras condicionales, etc.

Su alcance se restringe al código del método o de la instrucción.

No admiten modificadores de acceso Restringen el acceso a los diferentes objetos (clases, atributos, métodos,...) que componen una aplicación. Esto permite manejar la seguridad de las aplicaciones a un nivel más alto. salvo "final" y deben estar inicializadas antes de ser empleadas.

 
public class VariableLocal{
    public static void main(String args[]){
        VariableLocal vl=new VariableLocal();
        /**
         * La variable entera i es local pues está declarada e inicializada
         * dentro de un bucle for. Si se usa fuera del código del for se
         * producirá un error de compilación
         */
        for(int i=0;i<=5;i++){
            System.out.println(i);
            System.out.println("Repeticion "+i);
        }
        vl.mostrarVariable();
    }
    void mostrarVariable(){
        //Línea que provoca error de compilación.
        //Acceso incorrecto a una variable local
        System.out.println(i+1);
    }
}

Variables de instancia

Se declaran después de la clase y fuera de cualquier método.

Los valores que asumen para cada objeto constituyen el estado o conjunto de atributos del objeto.

Su alcance es global, es decir, las pueden utilizar directamente todos lo métodos no estáticos de la clase.

Para acceder desde el método main o desde cualquier otro método estático a una variable de instancia es necesario crear un objeto de la clase También se denominará instanciar una clase o crear una instancia de la clase. .

Si no se inicializan explícitamente, asumen el valor nulo por defecto, una vez instanciada la clase.

 public class SerHumano{
    //Declaración de tres variables de instancia
    String nombre;
    String colorOjos;
    int edad;
    void mostrarCaracteristicas(){
        System.out.println(nombre+" tiene "+edad+" años");
        System.out.println("Sus ojos son "+colorOjos);
    }
    void eresMayorEdad(){
        if(edad>=18){
            System.out.println(nombre+" es mayor de edad");
            System.out.println("Tiene "+edad+" años");
        }
        else{
            System.out.println(nombre+" es menor de edad");
            System.out.println("Tiene "+edad+" años");
        }
    }
    public static void main(String args[]){
        /*Instanciar un objeto de la clase y asignar valor a sus variables
        de instancia*/
        SerHumano sh1=new SerHumano();
        /*
         * Las variables de instancia se inicializan mediante un objeto de
         * la clase. Sus valores constituyen el estado del objeto.
         * Si sólo se crea un objeto, resulta más cómodo inicializarlas
         * en la misma línea donde fueron declaradas:
         * String nombre="Jesus";
         * String colorOjos="azules";
         * int edad=28;
         */
        sh1.nombre="Jesus";
        sh1.colorOjos="azules";
        sh1.edad=28;
        sh1.mostrarCaracteristicas();
        sh1.eresMayorEdad();
        System.out.println("---------------------");
        //Otro objeto de la clase y asignación de otros valores
        SerHumano sh2=new SerHumano();
        sh2.nombre="Rebeca";
        sh2.colorOjos="verdes";
        sh2.edad=27;
        sh2.mostrarCaracteristicas();
        sh2.eresMayorEdad();
        System.out.println("---------------------");
        System.out.println("FIN DEL PROGRAMA");
    }
}

Si las variables de instancia no se inicializan explícitamente, bien mediante un objeto de la clase, bien en la misma línea donde se declaran, qué ocurrirá?
Se mostrará el elemento nulo asociado a los valores iniciales de los diversos tipos de variables. 
Así, en las variables primitivas enteras (byte, short, int y long) dicho elemento nulo es 0, en las reales (float y double) es 0.0, en las booleanas es false y en las referenciadas (asociadas a objetos de clases) es null.

Si desea obtener un acceso sin restricciones a los contenidos del curso de Programación en Java y disfrutar de todas las herramientas del aula virtual (Videos explicativos streaming, acceso a los foros, chat, ejercicios resueltos, la ayuda del tutor, audioconferencia, estudio de grabación, test y actividades de autoevaluación, etc...) puede inscribirse completamente gratis y comenzar a realizar de forma inmediata el curso.
Este sitio web utiliza cookies de terceros con la finalidad de analizar el uso que hace de nuestra web y personalizar el contenido de los anuncios. Si continúa navegando entendemos que acepta su uso. Más información × Cerrar