Типы переменных в Java: локальные, экземпляра и статические
Переменная — именованное хранилище с определённым типом, определяющим размер, диапазон и операции.
Объявление: тип имя [= значение][, имя [= значение] ...].
Примеры
int a, b, c;
int a = 10, b = 10;
byte B = 22;
double pi = 3.14159;
char a = 'a';
Три вида переменных
- Локальные
- Поля экземпляра (instance)
- Статические (class/static)
Локальные переменные
- Объявляются в методах, конструкторах, блоках.
- Создаются при входе, уничтожаются при выходе.
- Модификаторы доступа не применяются.
- Видимы только в своём блоке.
- Реализованы в стеке.
- Нет значения по умолчанию — обязательна инициализация перед первым использованием.
Пример
public class Test {
public void pupAge() {
int age = 0;
age = age + 7;
System.out.println("Puppy age: " + age);
}
public static void main(String[] args) {
new Test().pupAge(); // Puppy age: 7
}
}
Ошибка без инициализации
public class Test {
public void pupAge() {
int age; // ошибка компиляции: variable might not have been initialized
age = age + 7;
}
}
Поля экземпляра (Instance Variables)
- В классе, вне методов/конструкторов/блоков.
- Слот в куче создаётся при создании объекта (
new). - Жизненный цикл = жизненный цикл объекта.
- Хранят состояние, нужное нескольким методам.
- Могут иметь модификаторы доступа (обычно
private). - Видимы во всех методах/конструкторах/блоках класса.
- Значения по умолчанию: числа — 0, boolean — false, ссылки — null.
- Доступ: прямо по имени в классе, в static-методах — через
ObjectReference.variable.
Пример
public class Employee {
public String name;
private double salary;
public Employee(String empName) { name = empName; }
public void setSalary(double empSal) { salary = empSal; }
public void printEmp() {
System.out.println("name: " + name);
System.out.println("salary: " + salary);
}
public static void main(String[] args) {
Employee empOne = new Employee("Ransika");
empOne.setSalary(1000);
empOne.printEmp(); // name: Ransika / salary: 1000.0
}
}
Статические переменные (Class/Static Variables)
- Объявлены с
staticв классе, вне методов. - Одна копия на класс, независимо от количества объектов.
- Часто используются как константы (
public static final). - Хранятся в статической памяти. Создаются при старте программы, уничтожаются при завершении.
- Видимость как у полей экземпляра, но чаще
public. - Значения по умолчанию те же. Можно инициализировать в статических блоках.
- Доступ:
ClassName.VariableName. - Константы именуются ВЕРХНИМ_РЕГИСТРОМ.
Пример
public class Employee {
private static double salary;
public static final String DEPARTMENT = "Development";
public static void main(String[] args) {
salary = 1000;
System.out.println(DEPARTMENT + " average salary: " + salary);
// Development average salary: 1000
}
}
Извне класса константа: Employee.DEPARTMENT.
Далее: модификаторы доступа и не-доступа.
java
- Мастерство C# переменных и примитивных типов данных: полное руководство
- Переменные, константы и литералы в C: полное руководство
- Классы хранения в C: область видимости, время жизни и производительность
- Переменные и литералы в Java: подробное руководство
- Примитивные типы данных в Java: полное руководство с примерами
- Освоение операторов Java: типы, синтаксис и практические примеры
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Типы аннотаций в Java: предопределенные, кастомные и мета-аннотации