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

Можно ли объявлять статические переменные в методах Java?

Статические файлы/переменные принадлежат этому классу и будут загружены в память вместе с классом. Вы можете вызывать их без создания объекта (используйте имя класса в качестве ссылки). В всего классе доступен только один экземпляр статического поля, то есть, значение статического поля одинаково для всех объектов. Вы можете определить статическое поле с помощью ключевого слова static.

Пример

public class Sample{
   static int num = 50;
   public void demo(){
      System.out.println("Значение num в методе demo " + Sample.num);
   }
   public static void main(String args[]){
      System.out.println("Значение num в методе main " + Sample.num);
      new Sample().demo();
   }
}

Результат вывода

Значение num в методе main 50
Значение num в методе demo 50

Статические переменные в методе

Переменные, имеющиеся в методе, являются локальными переменными, их диапазон находится внутри метода, и они будут уничтожены после выполнения метода. То есть, вы не можете использовать локальные переменные, которые противоречат определению классовых/статических переменных за пределами текущего метода. Поэтому声明 статическую переменную внутри метода не имеет смысла, и попытка сделать это приведет к ошибке компиляции.

Пример

В следующем примере Java-программы мы пытаемся声明 статическую переменную внутри метода.

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;
   }
}

Ошибки компиляции

Если вы попытаетесь запустить вышеуказанный код, то возникнут следующие ошибки-

Sample.java:6: ошибка: незаконное начало выражения
   static int num = 50;
  ^
Sample.java:9: ошибка: незаконное начало выражения
   static int num = 50;
^
2 ошибки
Давайте посмотрим, что вам понравится