English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

¿Qué es una variable final blanca? ¿Qué es una variable final estática blanca en Java?

Variables estáticas-Las variables estáticas también se conocen como variables de clase. Puede declarar una variable estática utilizando la palabra clave. Una vez declarada una variable estática, solo habrá una copia en la clase, independientemente de cuántos objetos se creen en la clase.

public static int num =; 39;

Variables de instancia-Estas variables pertenecen a la instancia de la clase (objeto). Estas se declaran dentro de la clase pero fuera de los métodos. Se inicializan cuando se instancia la clase. Se pueden acceder a ellos desde cualquier método, constructor o bloque específico de la clase.

Debe usar el objeto para acceder a las variables de instancia. Es decir, para acceder a las variables de instancia, debe crear un objeto de la clase y usar ese objeto, debe acceder a estas variables.

final-Después de declarar una variable final, no se puede reasignar.

Variables vacías

Las variables finales sin inicializar se denominan variables finales vacías. Al igual que las variables de instancia, las variables finales no se inicializarán con un valor por defecto. Por lo tanto,Es necesario inicializar las variables finales después de declararlas..

Sin embargo, si intenta usar una variable vacía en el código, se generará un error en tiempo de compilación.

Ejemplo

En el siguiente programa Java, la clase Student contiene dos variables finales name y age, y aún no se han inicializado.

public class Student {
   public final String name;
   public final int age;
   public void display(){
      System.out.println("Nombre del Estudiante: ");+this.name);
      System.out.println("Edad del Estudiante: ")}+this.age);
   }
   public static void main(String args[]) {
      new Student().display();
   }
}

Error en tiempo de compilación

Durante la compilación, el programa producirá los siguientes errores.

Student.java:3: error: la variable name no está inicializada en el constructor por defecto
   private final String name;
                        ^
Student.java:4: error: la variable age no está inicializada en el constructor por defecto
   private final int age;
                     ^
2 errores

Solución

Para resolver este problema, necesita inicializar las variables finales declaradas.-

public class Student {
   public final String name;
   public final int age;
   public Student(){
      this.name = "Raju";
      this.age =; 20;
   }
   public void display(){
      System.out.println("Nombre del Estudiante: ");+this.name );
      System.out.println("Edad del Estudiante: ")}+this.age );
   }
   public static void main(String args[]) {
      new Student().display();
   }
}

Resultado de salida

Nombre del Estudiante: Raju
Edad del Estudiante: 20

Variable estática final sin inicializar

De la misma manera, si declara una variable estática final sin inicializarla, se considera una variable estática final.

Cuando una variable se declara como variable estática y final, solo se puede inicializar en el bloque estático. Si intenta inicializarla en otro lugar, el compilador asume que está intentando reasignar su valor y genera un error en tiempo de compilación.-

Ejemplo

class Data{
   static final int num;
   Data(int i){
      num = i;
   }
}
public class ConstantsExample {
   public static void main(String args[]) {
      System.out.println("valor de la constante: ");+Data.num);
   }
}

Error en tiempo de compilación

ConstantsExample.java:4: error: no se puede asignar un valor a una variable final num
   num = i;
   ^
1 error

Ejemplo

Por lo tanto, debe inicializar la variable final estática en el bloque estático.

Para que el programa anterior funcione correctamente, debe inicializar la variable final estática en el bloque estático.-

class Data{
   static final int num;
   static{
      num = 1000;
   }
}
public class ConstantsExample {
   public static void main(String args[]) {
      System.out.println("valor de la constante: ");+Data.num);
   }
}

Resultado de salida

valor de la constante: 1000
Te puede gustar