English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Статические файлы/переменные принадлежат этому классу и будут загружены в память вместе с классом. Вы можете вызывать их без создания объекта (используйте имя класса в качестве ссылки). В всего классе доступен только один экземпляр статического поля, то есть, значение статического поля одинаково для всех объектов. Вы можете определить статическое поле с помощью ключевого слова 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 ошибки