Java: tipos de variables

Una variable nos proporciona un almacenamiento con nombre que nuestros programas pueden manipular. Cada variable en Java tiene un tipo específico, que determina el tamaño y el diseño de la memoria de la variable; el rango de valores que se pueden almacenar dentro de esa memoria; y el conjunto de operaciones que se pueden aplicar a la variable.

Debe declarar todas las variables antes de que se puedan utilizar. A continuación se muestra la forma básica de una declaración de variable:

data type variable [ = value][, variable [ = value] ...] ;

Aquí el tipo de datos es uno de los tipos de datos de Java y la variable es el nombre de la variable. Para declarar más de una variable del tipo especificado, puede utilizar una lista separada por comas.

A continuación se muestran ejemplos válidos de declaración e inicialización de variables en Java:

Ejemplo

int a, b, c;         // Declares three ints, a, b, and c.
int a = 10, b = 10;  // Example of initialization
byte B = 22;         // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a';        // the char variable a iis initialized with value 'a'

Este capítulo explicará varios tipos de variables disponibles en Java Language. Hay tres tipos de variables en Java:

  • Variables locales
  • Variables de instancia
  • Variables de clase / estáticas

Variables locales

  • Las variables locales se declaran en métodos, constructores o bloques.

  • Las variables locales se crean cuando se ingresa el método, constructor o bloque y la variable se destruirá una vez que salga del método, constructor o bloque.

  • Los modificadores de acceso no se pueden utilizar para variables locales.

  • Las variables locales son visibles solo dentro del método, constructor o bloque declarado.

  • Las variables locales se implementan a nivel de pila internamente.

  • No hay un valor predeterminado para las variables locales, por lo que las variables locales deben declararse y debe asignarse un valor inicial antes del primer uso.

Ejemplo

Aquí, la edad es una variable local. Esto se define dentro del método pupAge () y su alcance se limita solo a este método.

public class Test {
   public void pupAge() {
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

Esto producirá el siguiente resultado:

Salida

Puppy age is: 7

Ejemplo

El siguiente ejemplo usa age sin inicializarlo, por lo que daría un error en el momento de la compilación.

public class Test {
   public void pupAge() {
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

Esto producirá el siguiente error al compilarlo:

Salida

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

Variables de instancia

  • Las variables de instancia se declaran en una clase, pero fuera de un método, constructor o cualquier bloque.

  • Cuando se asigna un espacio para un objeto en el montón, se crea una ranura para cada valor de variable de instancia.

  • Las variables de instancia se crean cuando se crea un objeto con el uso de la palabra clave 'nuevo' y se destruyen cuando se destruye el objeto.

  • Las variables de instancia contienen valores que deben ser referenciados por más de un método, constructor o bloque, o partes esenciales del estado de un objeto que deben estar presentes en toda la clase.

  • Las variables de instancia se pueden declarar en el nivel de clase antes o después de su uso.

  • Se pueden proporcionar modificadores de acceso, por ejemplo, variables.

  • Las variables de instancia son visibles para todos los métodos, constructores y bloques de la clase. Normalmente, se recomienda hacer que estas variables sean privadas (nivel de acceso). Sin embargo, se puede dar visibilidad a las subclases de estas variables con el uso de modificadores de acceso.

  • Las variables de instancia tienen valores predeterminados. Para los números, el valor predeterminado es 0, para los booleanos es falso y para las referencias a objetos es nulo. Los valores se pueden asignar durante la declaración o dentro del constructor.

  • Se puede acceder a las variables de instancia directamente llamando al nombre de la variable dentro de la clase. Sin embargo, dentro de los métodos estáticos (cuando se les da accesibilidad a las variables de instancia), deben llamarse usando el nombre completo. ObjectReference.VariableName .

Ejemplo

import java.io.*;
public class Employee {

   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor.
   public Employee (String empName) {
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal) {
      salary = empSal;
   }

   // This method prints the employee details.
   public void printEmp() {
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]) {
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

Esto producirá el siguiente resultado:

Salida

name  : Ransika
salary :1000.0

Variables de clase / estáticas

  • Las variables de clase, también conocidas como variables estáticas, se declaran con la palabra clave static en una clase, pero fuera de un método, constructor o bloque.

  • Solo habría una copia de cada variable de clase por clase, independientemente de cuántos objetos se creen a partir de ella.

  • Las variables estáticas rara vez se utilizan más que declararse como constantes. Las constantes son variables que se declaran como públicas / privadas, finales y estáticas. Las variables constantes nunca cambian de su valor inicial.

  • Las variables estáticas se almacenan en la memoria estática. Es raro utilizar variables estáticas distintas de las declaradas final y utilizadas como constantes públicas o privadas.

  • Las variables estáticas se crean cuando el programa se inicia y se destruyen cuando el programa se detiene.

  • La visibilidad es similar a las variables de instancia. Sin embargo, la mayoría de las variables estáticas se declaran públicas ya que deben estar disponibles para los usuarios de la clase.

  • Los valores predeterminados son los mismos que los de las variables de instancia. Para los números, el valor predeterminado es 0; para los booleanos, es falso; y para referencias a objetos, es nulo. Los valores se pueden asignar durante la declaración o dentro del constructor. Además, los valores se pueden asignar en bloques inicializadores estáticos especiales.

  • Se puede acceder a las variables estáticas llamando con el nombre de clase ClassName.VariableName .

  • Al declarar variables de clase como final estática pública, los nombres de las variables (constantes) están todos en mayúsculas. Si las variables estáticas no son públicas y finales, la sintaxis de nomenclatura es la misma que la de las variables de instancia y locales.

Ejemplo

import java.io.*;
public class Employee {

   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]) {
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}

Esto producirá el siguiente resultado:

Salida

Development average salary:1000

Note - Si se accede a las variables desde una clase externa, se debe acceder a la constante como Empleado.

¿Lo que sigue?

Ya ha utilizado modificadores de acceso (públicos y privados) en este capítulo. El siguiente capítulo explicará en detalle los modificadores de acceso y los modificadores de no acceso.