Переменные и константы
Переменные — это основа любого языка программирования. Без них невозможно представить ни одну серьёзную программу. Разберёмся, что это такое, как работают и как правильно их использовать.
📦 Что такое переменная
Представьте, что у вас есть коробка с наклейкой «Мои монеты». Вы можете положить туда монеты, достать их, положить другие. Коробка — это переменная, наклейка — имя переменной, а монеты — значение.
Переменная — это именованный контейнер для хранения данных. Каждая переменная имеет три характеристики:
- Имя — по которому мы обращаемся к переменной (например,
age) - Тип — какого рода данные хранятся (число, текст, логическое значение)
- Значение — то, что реально лежит внутри (например, 25)
В Java переменные работают строго: вы не можете положить текст в числовую переменную, или число в текстовую. Тип определяется заранее и не может быть изменён.
int age = 25;
String name = "Анна";
boolean isStudent = true;
Здесь:
int— тип (целое число)age— имя переменной=— оператор присваивания (не «равно» в математическом смысле!)25— значение;— завершение инструкции
💡 Аналогия: Переменная — это как поле в анкете. Имя — название поля («Имя»), тип — что туда можно вписать (только текст / только число), значение — то, что вы реально написали («Анна»).
📝 Объявление и инициализация переменных
В Java есть два шага при работе с переменной:
- Объявление — создать переменную (сказать Java, что она существует)
- Инициализация — присвоить первое значение
int age; // объявление: создали пустую коробку
age = 25; // инициализация: положили значение 25
int score = 100; // объявление + инициализация в одной строке
Попытка использовать переменную до инициализации вызовет ошибку:
int x;
System.out.println(x); // ошибка: variable x might not have been initialized
Java защищает вас от работы с пустыми переменными — это одна из причин, почему Java считается безопасным языком.
Можно объявить несколько переменных одного типа в одной строке:
int x = 10, y = 20, z = 30;
Однако так делать не рекомендуется — лучше объявлять каждую переменную отдельно для читаемости кода.
🔢 Примитивные типы данных
Java提供ляет 8 примитивных типов — это базовые строительные блоки для данных. Подробно мы разберём каждый из них в Module 2, а пока — обзор:
Целое число от -128 до 127. Используется редко.
Целое от -32 768 до 32 767. Тоже редко.
Целое от -2 млрд до +2 млрд. Самый популярный тип.
Очень большие целые числа. Суффикс L.
Дробное число (точность ~7 знаков). Суффикс F.
Дробное число (точность ~15 знаков). Самый популярный.
Один символ: 'A', 'Я', '5'. В кавычках.
true или false. Логический тип.
int age = 25;
double price = 19.99;
char grade = 'A';
boolean isActive = true;
long population = 8_000_000_000L;
Обратите внимание на 8_000_000_000L — подчёркивания игнорируются Java и служат только для читаемости. А суффикс L говорит Java, что это тип long, а не int.
💡 Совет для новичков: Начните с двух типов: int для целых чисел и double для дробных. Остальные типы вы будете использовать по мере необходимости.
📝 Строки — ссылочный тип
Строки в Java — это не примитивный тип, а объект. Это значит, что строка — это не просто набор символов, а полноценный объект со своими методами:
String name = "Анна";
String greeting = "Привет, " + name + "!";
int length = greeting.length(); // 18
boolean hasA = greeting.contains("Анна"); // true
Обратите внимание: тип строки пишется как String (с большой буквы S), потому что это класс, а не примитив. Примитивные типы в Java пишутся строчными буквами (int, double, boolean).
Строки заключаются в двойные кавычки. Одинарные кавычки — для символов типа char:
String text = "Привет"; // строка — двойные кавычки
char symbol = 'A'; // символ — одинарные кавычки
⚠️ Важно: Строки в Java неизменяемы (immutable). Когда вы пишете name = "Борис", вы не меняете старую строку — вы создаёте новую и перенаправляете переменную. Подробнее об этом в Module 2.
🏷️ Правила именования переменных
Java имеет строгие правила именования. Нарушение правил вызовет ошибку компиляции:
✅ Что МОЖНО:
int age;
int myAge;
int _age;
int $age;
int age2;
int MAX_SIZE;
❌ Чего НЕЛЬЗЯ:
int 2age; // нельзя начинать с цифры
int my-age; // нельзя использовать дефис
int my age; // нельзя использовать пробел
int class; // нельзя использовать ключевые слова
Но правила и именование — это разные вещи. Правила — это минимум, а именование — это стиль. Вот рекомендации:
- camelCase — начинайте со строчной буквы, далее заглавные:
firstName,age,totalScore - Осмысленные имена:
ageлучше, чемa,studentCountлучше, чемsc - Не используйте сокращения:
count, а неcnt - Булевы переменные: начинайте с
is,has,can:isActive,hasPermission
int studentCount = 30;
String firstName = "Анна";
boolean isActive = true;
double totalScore = 95.5;
🔒 Константы: final
Иногда значение переменной не должно меняться. Например, число Пи = 3.14159... всегда одно и то же. Для этого в Java используется ключевое слово final:
final double PI = 3.14159;
final int MAX_USERS = 100;
final String COUNTRY = "Россия";
MAX_USERS = 200; // ошибка! нельзя изменить final переменную
Попытка изменить final-переменную вызовет ошибку компиляции. Java не позволяет этого.
По convention, имена констант пишутся ЗАГЛАВНЫМИ БУКВАМИ с подчёркиваниями:
final int MAX_SIZE = 100; // константа
final double TAX_RATE = 0.13; // константа
final String APP_NAME = "MyApp"; // константа
Константы полезны, потому что:
- Запрещают случайное изменение важных значений
- Дают осмысленные имена вместо «магических чисел»
- Делают код читаемым и поддерживаемым
💡 Плохо: if (age > 21) — что такое 21? Зачем 21?
Хорошо: final int DRINKING_AGE = 21; if (age > DRINKING_AGE) — сразу понятно.
🔮 Локальная инференция: var (Java 10+)
Начиная с Java 10, можно не указывать тип явно — Java сама определит его из значения:
var age = 25; // Java понимает, что это int
var name = "Анна"; // Java понимает, что это String
var price = 19.99; // Java понимает, что это double
var isActive = true; // Java понимает, что это boolean
Это называется локальная инференция типов. Java смотрит на правую часть выражения и сама определяет тип переменной. Результат точно такой же, как если бы вы написали тип явно.
Когда var удобен:
var numbers = new ArrayList<Integer>(); // без var было бы многословно
var connection = DriverManager.getConnection(url);
var result = processLargeDataset(data);
Когда var — плохая идея:
var x = 10; // неочевидно — int или double?
var temp = getData(); // что возвращает getData?
💡 Совет: Используйте var, когда тип очевиден из контекста (var list = new ArrayList<String>()), и явный тип, когда значение неоднозначно (int result = calculate()).
Важные ограничения var:
- Только для локальных переменных (внутри методов), не для полей класса
- Обязательна инициализация:
var x;— ошибка - Нельзя использовать для параметров методов и возвращаемых значений (пока)
🎯 Практика: простая программа
Давайте напишем программу, которая использует переменные для вывода информации:
public class AboutMe {
public static void main(String[] args) {
String name = "Анна";
int age = 22;
double height = 1.68;
boolean isStudent = true;
String city = "Москва";
System.out.println("Имя: " + name);
System.out.println("Возраст: " + age);
System.out.println("Рост: " + height + " м");
System.out.println("Студент: " + isStudent);
System.out.println("Город: " + city);
}
}
Вывод:
Имя: Анна
Возраст: 22
Рост: 1.68 м
Студент: true
Город: Москва
Заметьте, как удобно: создали переменные один раз, а используете сколько угодно. И если нужно изменить данные — меняем значение в одном месте, а не везде по коду.
💡 Попробуйте сами: Создайте программу «Мой комплект». Заведите переменные для марки компьютера, объёма RAM, размера диска и операционной системы. Выведите всё в консоль.
✅ Итоги урока
- Переменная — именованный контейнер для данных с типом и значением
- Объявление:
тип имя = значение; - 8 примитивных типов: byte, short, int, long, float, double, char, boolean
- String — ссылочный тип (объект), не примитив
- Именование: camelCase, осмысленные имена, без ключевых слов
- final — создаёт константу, которую нельзя изменить
- var (Java 10+) — позволяет не указывать тип явно, если он очевиден
Отлично! Теперь вы знаете, как работают переменные. Следующий урок: Комментарии и стиль кода →
Тест: Переменные и константы
6 вопросов