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

¿Se puede declarar una variable estática en un método de Java?

Archivo estático/Las variables pertenecen a esta clase, se cargarán junto con la clase en la memoria. Pueden ser llamadas sin crear un objeto (utilizando el nombre de la clase como referencia). En toda la clase solo hay una copia del campo estático disponible, es decir, el valor del campo estático es el mismo en todos los objetos. Puede definir un campo estático utilizando la palabra clave static.

Ejemplo

public class Sample{
   static int num = 50;
   public void demo(){
      System.out.println("Valor de num en el método demo ")+ Sample.num);
   }
   public static void main(String args[]){
      System.out.println("Valor de num en el método main ")+ Sample.num);
      new Sample().demo();
   }
}

Resultados de salida

Valor de num en el método main 50
Valor de num en el método demo 50

Variable estática en el método

Las variables en el método son variables locales, que tienen un rango dentro del método y se destruyen después de la ejecución del método. Es decir, no puede usar variables que se encuentran fuera del método/La definición de la variable estática entra en conflicto con las variables locales. Por lo tanto, no tiene sentido declarar una variable estática dentro del método, y si aún así lo hace, se generará un error en tiempo de compilación.

Ejemplo

En el siguiente programa Java, intentamos declarar una variable estática dentro del método.

import java.io.IOException;
import java.util.Scanner;
public class Sample {
   static int num;
   public void sampleMethod(Scanner sc){
      static int num = 50;
   }
   public static void main(String args[]) throws IOException {
      static int num = 50;
   }
}

Errores en tiempo de compilación

Si intenta ejecutar el programa anterior, se producirán los siguientes errores-

Sample.java:6: error: inicio ilegal de expresión
   static int num = 50;
  ^
Sample.java:9: error: inicio ilegal de expresión
   static int num = 50;
^
2 errores