Найти в Дзене
Анастасия Софт

Урок 8 для Java-разработчика. 💻 Операторы в Java: просто, чётко и на примерах

Оглавление
Урок 8 для Java-разработчика. 💻 Операторы в Java: просто, чётко и на примерах
Урок 8 для Java-разработчика. 💻 Операторы в Java: просто, чётко и на примерах

Когда ты пишешь код на Java, тебе каждый день приходится использовать операторы. Это символы или конструкции, которые выполняют действия — от простого сложения до сложных логических проверок. Давайте разложим всё по полочкам и поймём, как и какие операторы работают, что такое приоритет и зачем нужен класс Math.

🚀 Что такое оператор и операнд?

Оператор — это команда, которая говорит Java: «Эй, сделай что-то с этими данными!».

Операнд — это сами данные.

Пример:

int result = 7 + 3;

  • + — оператор
  • 7 и 3 — операнды

🧮 Арифметические операторы

Используются для выполнения стандартных математических операций.

-2

🔎 Пример с пояснениями:

public class ArithmeticExample {
public static void main(String[] args) {
int a = 8;
int b = 3;

System.out.println("Сумма: " + (a + b)); // 11
System.out.println("Разность: " + (a - b)); // 5
System.out.println("Произведение: " + (a * b)); // 24
System.out.println("Частное: " + (a / b)); // 2
System.out.println("Остаток: " + (a % b)); // 2

a++; // a теперь 9
b--; // b теперь 2

System.out.println("a после a++: " + a);
System.out.println("b после b--: " + b);
}
}

🧠 Логические операторы

Работают с условиями. Результат — всегда true или false.

-3

🔎 Пример:

int x = 7;
int y = 10;

System.out.println(x > 5 && y < 15); // true
System.out.println(x < 5 || y < 5); // false
System.out.println(!(x == 7)); // false

🔍 Операторы сравнения

Сравнивают два значения.

-4

💡 Тернарный оператор ?:

Позволяет записать условие и выбрать результат в одну строку.

Синтаксис:

<условие> ? <если true> : <если false>

🔎 Пример:

int age = 17;
String status = (age >= 18) ? "Взрослый" : "Подросток";
System.out.println(status); // Подросток

⚙️ Побитовые операторы

Работают на уровне битов (0 и 1). Используются реже, но могут быть полезны в оптимизации.

-5

🔎 Пример:

int m = 6; // 0110
int n = 3; // 0011

System.out.println(m & n); // 2 (0010)
System.out.println(m | n); // 7 (0111)
System.out.println(m ^ n); // 5 (0101)

🥇 Приоритет операторов

Когда в выражении несколько операторов, Java должна понять, в каком порядке их выполнять.

Пример:

int x = 2 + 3 * 4; // Сначала 3*4, потом +2 = 14

Приоритет (от высокого к низкому):

  1. (), [], .
  2. ++, --, !
  3. *, /, %
  4. +, -
  5. <<, >>, >>>
  6. <, <=, >, >=
  7. ==, !=
  8. &
  9. ^
  10. |
  11. &&
  12. ||
  13. ?:
  14. =, +=, -=, и др.

📐 Класс Math: полезные методы

Java даёт готовый набор функций через класс Math.

-6

✅ Проверь себя: тест (ответы в конце статьи, сначала попробуй сделать самостоятельно)

  1. Какой результат выведет следующий код?

System.out.println(100 + 50L);

  • A. 150
  • B. 10050
  • C. Ошибка компиляции
  • D. 150L
  1. Что напечатает?

System.out.println("Результат: " + 3 + 2);

  • A. Результат: 5
  • B. Результат: 32
  • C. Результат: 3 + 2
  • D. Ошибка компиляции
  1. Какое выражение вернёт true?

int a = 5, b = 10;

  • A. a < 3 && b < 20
  • B. a > 3 && b < 20
  • C. a > 3 && b > 20
  • D. a > 10 && b < 5
  1. Какой из вариантов сработает без ошибки?

String s = "Java";
int i = 1;
long l = 5;

  • A. i << s
  • B. i << l
  • C. i << i
  • D. i << 1.0
  1. Что будет напечатано?

System.out.println(0b1010 | 0b0101);

  • A. 15
  • B. 0
  • C. 5
  • D. 12
  1. Какой метод из класса Math вернёт наибольшее число из двух?
  • A. Math.abs()
  • B. Math.max()
  • C. Math.high()
  • D. Math.top()
  1. Что делает оператор instanceof?
  • A. Сравнивает значения переменных
  • B. Проверяет тип переменной
  • C. Выполняет логическое И
  • D. Проверяет, равны ли строки
  1. Что вернёт следующий код?

int age = 20;
String result = (age < 18) ? "Underage" : "Adult";
System.out.println(result);

  • A. Underage
  • B. Adult
  • C. 20
  • D. Ошибка компиляции

📝 Задачи для отработки навыков (ответы в конце статьи, сначала попробуй сделать самостоятельно)

Задача 1. Операции с числами и строками

Напишите программу, которая выполняет следующие операции:

  1. Преобразует строку "12" в число и добавляет к числу 8.
  2. Преобразует число 5 в строку и объединяет его с " результат".
  3. Вычисляет сумму чисел 2, 5 и 8, а затем умножает её на 3.

Задача 2. Побитовые операции

Даны два числа:

int a = 45; // 00101101
int b = 25; // 00011001

Необходимо вычислить:

  1. Результат побитового И (a & b).
  2. Результат побитового ИЛИ (a | b).
  3. Результат побитового исключающего ИЛИ (a ^ b).
  4. Результат побитового сдвига влево (a << 2).
  5. Результат побитового сдвига вправо (b >> 2).

Задача 3. Проверка чётности

Напишите программу, которая с помощью побитового оператора проверяет, является ли число чётным или нечётным. Введите несколько чисел и для каждого выведите "Чётное" или "Нечётное".

Задача 4. Логические операторы

Даны три переменные:

boolean a = true;
boolean b = false;
boolean c = true;

Вам нужно:

  1. Вывести результат логического И для всех трёх переменных (a && b && c).
  2. Вывести результат логического ИЛИ для всех трёх переменных (a || b || c).
  3. Вывести результат логического НЕ для каждой из переменных (например, !a, !b и !c).

Задача 5. Использование тернарного оператора

Напишите программу, которая:

  1. Проверяет, является ли число положительным, отрицательным или нулём, и выводит соответствующее сообщение с помощью тернарного оператора.
  2. Вводится три числа, программа должна вывести наибольшее из них с использованием тернарного оператора.

✅ Заключение

В этом уроке мы рассмотрели ключевые виды операторов в Java:

  • Арифметические операторы помогают выполнять базовые математические действия.
  • Побитовые операторы работают на уровне битов и полезны для низкоуровневой оптимизации.
  • Операторы сравнения возвращают true или false в зависимости от логического результата.
  • Логические операторы позволяют строить сложные условия.
  • Тернарный оператор упрощает ветвление и заменяет конструкцию if-else в одной строке.
  • Класс Math предоставляет мощный инструментарий для математических вычислений.
  • Мы также изучили приоритет операторов, который помогает Java правильно расставлять порядок действий в сложных выражениях.

Теперь ты готов увереннее писать сложные условия, использовать математические методы и писать более читаемый код.

📝 Ответы на тест:

  1. Какой результат выведет следующий код?

System.out.println(100 + 50L);

Правильный ответ: A. 150

Объяснение: При сложении числа int и числа long результат автоматически преобразуется в long. Окончательный результат будет 150.

  1. Что напечатает?

System.out.println("Результат: " + 3 + 2);

Правильный ответ: B. Результат: 32

Объяснение: Операция сложения работает слева направо, и строки в Java имеют больший приоритет. Поэтому сначала "Результат: " объединяется с числом 3, а потом с числом 2, что даёт строку "Результат: 32".

2. Какое выражение вернёт true?

int a = 5, b = 10;

Правильный ответ: B. a > 3 && b < 20

Объяснение: Логическое И (&&) вернёт true, если оба условия истинны. В данном случае, a > 3 (истинно) и b < 20 (истинно).

3. Какой из вариантов сработает без ошибки?

String s = "Java";
int i = 1;
long l = 5;

Правильный ответ: C. i << i

Объяснение: Операция сдвига (<<) возможна только для числовых типов данных. В этом случае i (тип int) можно сдвигать. Все остальные операции, например, сдвиг с использованием строк или вещественных типов, вызовут ошибку.

4. Что будет напечатано?

System.out.println(0b1010 | 0b0101);

✅ Правильный ответ: A. 15

Пояснение:

  • Побитовое ИЛИ (|) возвращает 1, если хотя бы один из битов равен 1.
  • В данном случае:
    1 | 0 = 1
    0 | 1 = 1
    1 | 0 = 1
    0 | 1 = 1

Итог: 0b1111 → 15.

5. Какой метод из класса Math вернёт наибольшее число из двух?

Правильный ответ: B. Math.max()

Объяснение: Метод Math.max() принимает два аргумента и возвращает наибольшее из них.

6. Что делает оператор instanceof?

Правильный ответ: B. Проверяет тип переменной

Объяснение: Оператор instanceof проверяет, является ли объект экземпляром указанного класса или его подклассов.

7. Что вернёт следующий код?

int age = 20;
String result = (age < 18) ? "Underage" : "Adult";
System.out.println(result);

Правильный ответ: B. Adult

Объяснение: Оператор тернарного выбора (?:) проверяет условие. В данном случае, так как возраст больше 18, то возвращается строка "Adult".

Поздравляю с прохождением теста! Если есть вопросы по любому из пунктов, не стесняйся задавать!

📝 Решения и пояснения к задачам

Задача 1. Операции с числами и строками

public class Operations {
public static void main(String[] args) {
// 1. Преобразование строки "12" в число и добавление 8
String str = "12";
int num1 = Integer.parseInt(str);
System.out.println(num1 + 8); // Выводит 20

// 2. Преобразование числа 5 в строку и объединение с " результат"
int num2 = 5;
String str2 = String.valueOf(num2);
System.out.println(str2 + " результат"); // Выводит 5 результат

// 3. Сумма чисел 2, 5 и 8, умноженная на 3
int sum = 2 + 5 + 8;
System.out.println(sum * 3); // Выводит 45
}
}

Пояснение:

  • В первом случае строка "12" преобразуется в число с помощью Integer.parseInt().
  • Во втором случае число 5 преобразуется в строку с помощью String.valueOf().
  • В третьем случае выполняются простые арифметические операции с числами.

Задача 2. Побитовые операции

public class BitwiseOperations {
public static void main(String[] args) {
int a = 45; // 00101101
int b = 25; // 00011001

// 1. Побитовое И
System.out.println(a & b); // Выводит 9 (00001001)

// 2. Побитовое ИЛИ
System.out.println(a | b); // Выводит 61 (00111101)

// 3. Побитовое исключающее ИЛИ
System.out.println(a ^ b); // Выводит 52 (00110100)

// 4. Побитовый сдвиг влево на 2
System.out.println(a << 2); // Выводит 180 (10110100)

// 5. Побитовый сдвиг вправо на 2
System.out.println(b >> 2); // Выводит 6 (00000110)
}
}

Пояснение:

  • Побитовые операции работают на уровне отдельных битов чисел.
  • a & b оставляет единицу в битах, где оба числа имеют единицу.
  • a | b оставляет единицу в битах, где хотя бы одно число имеет единицу.
  • a ^ b оставляет единицу в битах, где только одно число имеет единицу.
  • Сдвиг влево (<<) сдвигает все биты числа влево, заполняя правую часть нулями.
  • Сдвиг вправо (>>) сдвигает биты вправо, заполняя левую часть нулями (для положительных чисел).

Задача 3. Проверка чётности

public class EvenOdd {
public static void main(String[] args) {
int[] numbers = {4, 7, 10, 21, 28}; // Пример чисел

for (int num : numbers) {
System.out.println((num & 1) == 0 ? "Чётное" : "Нечётное");
}
}
}

Пояснение:

  • Чтобы проверить чётность числа, используем побитовый оператор &. Если результат операции num & 1 равен 0, число чётное, если 1 — нечётное.

Задача 4. Логические операторы

public class LogicalOperators {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
boolean c = true;

// 1. Логическое И
System.out.println(a && b && c); // Выводит false

// 2. Логическое ИЛИ
System.out.println(a || b || c); // Выводит true

// 3. Логическое НЕ
System.out.println(!a); // Выводит false
System.out.println(!b); // Выводит true
System.out.println(!c); // Выводит false
}
}

Пояснение:

  • Логическое И (&&) возвращает true только если оба операнда true.
  • Логическое ИЛИ (||) возвращает true если хотя бы один из операндов true.
  • Логическое НЕ (!) инвертирует значение операнда.

Задача 5. Использование тернарного оператора

public class TernaryOperator {
public static void main(String[] args) {
// 1. Проверка на положительное, отрицательное или ноль
int num = -5;
String result = (num > 0) ? "Положительное" : (num < 0) ? "Отрицательное" : "Ноль";
System.out.println(result); // Выводит Отрицательное

// 2. Найти наибольшее из трёх чисел
int a = 10, b = 20, c = 15;
int max = (a > b && a > c) ? a : (b > c) ? b : c;
System.out.println(max); // Выводит 20
}
}

Пояснение:

  • В первом случае используется вложенный тернарный оператор для проверки, является ли число положительным, отрицательным или равным нулю.
  • Во втором случае тернарный оператор используется для поиска максимального числа среди трёх.

Эти задачи помогут вам лучше понять работу операторов в Java и отработать их применение в реальных задачах.