Статические переменные
Статические переменные Java, объявляются внутри класса с ключевым словом static
. Такие переменные, по существу, являются глобальными переменными. При объявлении объектов, копии статических переменных не создаются - создается одна статическая переменная на весь класс. Статическая переменная создается при загрузке класса.
Рассмотрим различие между обычными и статическими переменными на следующем примере. Для обращения к обычной переменной а
, необходим объект класса StaticVars
. К переменной b
можно обращаться без упоминания объекта и даже без упоминания класса (если обращение происходит из того же класса):
public class StaticVars {
int a;
static int b;
public static void main(String[] args) {
StaticVars staticVars = new StaticVars();
System.out.println(staticVars.a);
System.out.println(b);
}
}
При обращении к статической переменной из другого класса, необходимо указать имя ее класса - StaticVars.b
. Можно обратиться к статической переменной используя любой объект того же класса, например - staticVars1.b
или staticVars2.b
. Но такой вариант не рекомендуется, так как пользователь вашего кода может решить, что это обычная переменная.
public class StaticVarsExample {
public static void main(String[] args) {
StaticVars staticVars1 = new StaticVars();
StaticVars staticVars2 = new StaticVars();
System.out.println(StaticVars.b);
System.out.println(staticVars1.b);
staticVars1.b = 3;
staticVars2.b = 4;
System.out.println(staticVars1.b);
System.out.println(staticVars2.b);
}
}
Результат выполнения кода:
0
0
4
4
Рассмотрим классический пример, демонстрирующий использование статических переменных для подсчета количества созданных объектов класса Ball
. Для этого определим в классе статическую переменную count
, которая и будет содержать количество созданных объектов. При создании объекта всегда вызывается конструктор, поэтому именно там будем увеличивать переменную count
. Для доступа к private
переменной count
определен метод getCount()
:
public class Ball {
static int count = 0;
String color = "none";
public Ball(String color) {
this.color = color;
count++;
}
}
public class BallExample {
public static void main(String[] args) {
Ball ball1 = new Ball("красный");
Ball ball2 = new Ball("голубой");
System.out.println("Количество созданных объектов: "
+ Ball.count);
}
}
Результат выполнения кода:
Количество созданных объектов: 2

Please log in or register to have a possibility to add comment.