5.03. Операторы и циклы в Java
Операторы и циклы в Java
Операторы можно разделить на несколько видов:
| Тип | Примеры |
|---|---|
| Арифметические | + — сложение, - — вычитание, * — умножение, / — деление, % — остаток от деления |
| Сравнения | == — равно, != — не равно, > — больше, < — меньше, >= — больше или равно, <= — меньше или равно |
| Логические | ! — отрицание (NOT), & — конъюнкция (AND), | — дизъюнкция (OR), ^ — исключающее ИЛИ (XOR), && — сокращённая конъюнкция, || — сокращённая дизъюнкция, ~ — побитовое дополнение (NOT) |
| Присваивания | =, +=, -=, *=, /= |
| Тернарный | условие ? значение_если_истина : значение_если_ложь |
| Условные операторы | if-else, switch |
| Прочие | ++ — инкремент (увеличение на 1), -- — декремент (уменьшение на 1), // — однострочный комментарий, /* */ — многострочный комментарий |
Важно:
Для примитивных типов (например, int, double) оператор == сравнивает значения.
Для объектов (например, строк или пользовательских классов) оператор == сравнивает ссылки на объекты, то есть их физическое местоположение в памяти.
Чтобы сравнить содержимое объектов, используется метод .equals().
В Java есть методы, которые выполняют функции, аналогичные операторам:
.equals()— аналог оператора == для сравнения содержимого объектов..compareTo()— используется для сравнения строк или объектов, реализующих интерфейс Comparable;Math.addExact(),Math.subtractExact(),Math.multiplyExact()— аналоги операторов+,-,*, но с проверкой на переполнение. Если результат выходит за пределы допустимых значений, выбрасывается исключение ArithmeticException;Integer.bitCount()— подсчитывает количество единиц в двоичном представлении числа. Аналогично работе с битовыми операциями (&,|,^);Objects.equals()— безопасный способ сравнения двух объектов, который обрабатывает null. Если оба объекта равны null, метод вернёт true;Integer.parseInt(),Double.parseDouble()— аналоги операторов приведения типов (например, (int)).
Класс Object — базовый для всех классов в Java. Он определяет поведение, доступное каждому объекту.
Основные методы:
equals(Object obj)— сравнение объектов на логическое равенствоhashCode()— возвращает хеш-код объектаtoString()— строковое представление объектаgetClass()— возвращает объект Class, представляющий тип в рантаймеclone()— создает копию объекта (если поддерживает Cloneable)finalize()— вызывается перед сборкой мусора (устарел и не рекомендуется)wait(),notify(),notifyAll()— методы для межпоточной синхронизации.
★ Условия (условные операторы) управляют потоком выполнения программы, позволяют выполнять разный код, в зависимости от выполнения определённого условия.
if-else (если/иначе).
Синтаксис:
if (условие) {
// выполняется, если условие истинно
} else {
// выполняется, если условие ложно
}
Пример:
int age = 18;
if (age >= 18) {
System.out.println("Вы совершеннолетний");
} else {
System.out.println("Вы несовершеннолетний");
}
switch позволяет выбрать одно из нескольких возможных направлений выполнения программы.
Синтаксис:
switch (выражение) {
case значение1:
// код
break;
case значение2:
// код
break;
default:
// код по умолчанию
}
Пример:
int day = 3;
switch (day) {
case 1 -> System.out.println("Понедельник");
case 2 -> System.out.println("Вторник");
case 3 -> System.out.println("Среда");
default -> System.out.println("Неизвестный день");
}
★ Циклы позволяют выполнять блок кода несколько раз.
for (для) используется, когда известно количество повторений.
Синтаксис:
for (инициализация; условие; обновление) {
// тело цикла
}
Пример:
for (int i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
while (пока) проверяет условие перед каждой итерацией.
Синтаксис:
while (условие) {
// тело цикла
}
Пример:
int i = 0;
while (i < 5) {
System.out.println("i = " + i);
i++;
}
do-while (делать, пока), выполняется хотя бы один раз, даже если условие ложно.
Синтаксис:
do {
// тело цикла
} while (условие);
Пример:
int j = 0;
do {
System.out.println("j = " + j);
j++;
} while (j < 5);