En el lenguaje Java, todas las variables deben declararse antes de su uso. El formato básico para declarar variables es el siguiente:
type identifier [ = value][, identifier [= value] ...] ;
Descripción del formato: el tipo es un tipo de datos Java. El identificador es el nombre de la variable. Se pueden declarar varias variables del mismo tipo separadas por comas.
A continuación se enumeran algunos ejemplos de declaraciones de variables. Tenga en cuenta que algunos incluyen un proceso de inicialización.
int a, b, c; // 声明三个int型整数:a、b、c。 int d = 3, e, f = 5; // 声明三个整数并赋予初值。 byte z = 22; // 声明并初始化z。 double pi = 3.14159; // 声明了pi。 char x = 'x'; // 变量x的值是字符'x'。
Los tipos de variables soportados por el lenguaje Java son:
- Variables locales: Variables en métodos de una clase.
- Variables de instancia: variables independientes de los métodos, pero sin modificación estática.
- Variables de clase: variables independientes de los métodos, modificadas con estática.
public class Variable{ static int allClicks=0; // 类变量String str="hello world"; // 实例变量public void method(){ int i =0; // 局部变量} }
variables locales de Java
- Las variables locales se declaran en métodos, constructores o bloques de instrucciones;
- Las variables locales se crean cuando se ejecutan métodos, constructores o bloques de instrucciones. Cuando se ejecutan, las variables se destruirán;
- Los modificadores de acceso no se pueden utilizar en variables locales;
- Las variables locales sólo son visibles en el método, constructor o bloque de instrucciones en el que están declaradas;
- Las variables locales se asignan en la pila.
- Las variables locales no tienen un valor predeterminado, por lo que después de declarar una variable local, se debe inicializar antes de poder usarla.
Ejemplo 1
En el siguiente ejemplo, la edad es una variable local. Está definido en el método pupAge() y su alcance se limita 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(); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Puppy age is: 7
Ejemplo 2
En el siguiente ejemplo, la variable edad no se inicializa, por lo que se produce un error durante 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(); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Test.java:4:variable number might not have been initialized age = age + 7; ^ 1 error
variables de instancia
- Las variables de instancia se declaran dentro de una clase, pero fuera de los métodos, constructores y bloques de instrucciones;
- Cuando se crea una instancia de un objeto, se determina el valor de cada variable de instancia;
- Las variables de instancia se crean cuando se crea el objeto y se destruyen cuando se destruye el objeto;
- Al menos un método, constructor o bloque de declaración debe hacer referencia al valor de una variable de instancia, de modo que el exterior pueda obtener información de la variable de instancia a través de estos métodos;
- Las variables de instancia se pueden declarar antes o después de su uso;
- Los modificadores de acceso pueden modificar variables de instancia;
- Las variables de instancia son visibles para los métodos, constructores o bloques de instrucciones de una clase. En general, las variables de instancia deben hacerse privadas. Las variables de instancia se pueden hacer visibles para las subclases mediante el uso de modificadores de acceso;
- Las variables de instancia tienen valores predeterminados. El valor predeterminado de las variables numéricas es 0, el valor predeterminado de las variables booleanas es falso y el valor predeterminado de las variables de tipo de referencia es nulo. El valor de una variable se puede especificar en el momento de la declaración o en el constructor;
- Se puede acceder a las variables de instancia directamente a través del nombre de la variable. Pero en métodos estáticos y otras clases, debe utilizar el nombre completo: ObjectReference.VariableName.
Ejemplo:
import java.io.*; public class Employee{ // 这个成员变量对子类可见public String name; // 私有变量,仅在该类可见private double salary; //在构造器中对name赋值public Employee (String empName){ name = empName; } //设定salary的值public void setSalary(double empSal){ salary = empSal; } // 打印信息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(); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
name : Ransika salary :1000.0
Variables de clase (variables estáticas)
- Las variables de clase también se denominan variables estáticas y se declaran con la palabra clave estática en una clase, pero deben estar fuera de métodos, constructores y bloques de instrucciones.
- No importa cuántos objetos cree una clase, la clase sólo tiene una copia de las variables de clase.
- Las variables estáticas rara vez se utilizan excepto cuando se declaran como constantes. Las constantes se refieren a variables declaradas como de tipo público/privado, final y estático. Las constantes no se pueden cambiar después de la inicialización.
- Las variables estáticas se almacenan en un área de almacenamiento estático. A menudo declaradas como constantes, las variables rara vez se declaran utilizando estática únicamente.
- Las variables estáticas se crean al comienzo del programa y se destruyen al final del programa.
- Tiene visibilidad similar a las variables de instancia. Pero para que sean visibles para los usuarios de la clase, la mayoría de las variables estáticas se declaran como tipos públicos.
- Los valores predeterminados son similares a las variables de instancia. El valor predeterminado de las variables numéricas es 0, el valor predeterminado de las variables booleanas es falso y el valor predeterminado de los tipos de referencia es nulo. El valor de una variable se puede especificar al declararla o en el constructor. Además, las variables estáticas también se pueden inicializar en bloques de declaraciones estáticas.
- Se puede acceder a las variables estáticas a través de: ClassName.VariableName.
- Cuando una variable de clase se declara como tipo final estático público, el nombre de la variable de clase debe utilizar letras mayúsculas. Si la variable estática no es de tipo público y final, su método de denominación es coherente con el método de denominación de las variables de instancia y las variables locales.
Ejemplo:
import java.io.*; public class Employee{ //salary是静态的私有变量private static double salary; // DEPARTMENT是一个常量public static final String DEPARTMENT = "Development "; public static void main(String args[]){ salary = 1000; System.out.println(DEPARTMENT+"average salary:"+salary); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Development average salary:1000
Nota: Si otras clases quieren acceder a esta variable, pueden acceder a ella de esta manera: Empleado.DEPARTAMENTO.
En este capítulo aprendimos sobre los tipos de variables de Java y en el próximo capítulo presentaremos el uso de modificadores de Java.