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.