Java: Операторы
Сначала разберем базовую терминологию. Знак операции вроде + называют оператором. Оператор задает действие, например сложение:
System.out.println(8 + 2); // 10Здесь + работает как оператор, а числа 8 и 2 называют операндами. Операндами называют значения, к которым оператор применяет действие.
операнд оператор операнд результат
8 + 2 → 10
5 - 3 → 2
4 * 3 → 12У сложения два операнда. Один стоит слева от знака, другой справа. Операции с двумя операндами называют бинарными. Если пропустить хотя бы один операнд, программа не скомпилируется и выдаст синтаксическую ошибку:
System.out.println(3 + ); // так писать нельзяБинарными операции бывают не всегда. Существуют еще унарные, с одним операндом, и тернарные, с тремя.
Унарный минус
Один и тот же знак иногда означает разные операции. Посмотрите на минус:
System.out.println(-3); // -3Здесь минус стоит перед одним числом и работает как унарный оператор. Он берет число 3 и возвращает противоположное ему, то есть -3.
Когда минус стоит между двумя числами, это уже вычитание:
System.out.println(5 - 2); // 3
System.out.println(10 - 7); // 3Разница особенно заметна на отрицательных числах:
System.out.println(5 - -2); // 7Слева идет вычитание 5 - (...), а справа унарный минус превращает 2 в отрицательное число. Получается 5 - (-2), и это дает 7. Минус на минус дает плюс, ровно как в школе.
Значение минуса зависит от соседей. Рядом с двумя числами это вычитание, перед одним числом это смена знака. Запись -3 одновременно и само число, и оператор с операндом. У многих языков программирования такая же логика, так что вещь это привычная.
Унарным бывает и плюс. Запись +5 лишь подчеркивает, что число положительное, и значения не меняет:
System.out.println(+5); // 5Остальные арифметические операторы *, / и % всегда бинарные, им нужны два операнда. Только плюс и минус умеют работать сразу в двух ролях, и как бинарные, и как унарные.
Задание
Напишите программу, которая посчитает разность между числами 6 и -81 и выведет ответ на экран.
Полезное
Отбивайте арифметические операторы пробелами от операндов, это хороший стиль программирования.
Java: Операторы
Сначала разберем базовую терминологию. Знак операции вроде + называют оператором. Оператор задает действие, например сложение:
System.out.println(8 + 2); // 10Здесь + работает как оператор, а числа 8 и 2 называют операндами. Операндами называют значения, к которым оператор применяет действие.
операнд оператор операнд результат
8 + 2 → 10
5 - 3 → 2
4 * 3 → 12У сложения два операнда. Один стоит слева от знака, другой справа. Операции с двумя операндами называют бинарными. Если пропустить хотя бы один операнд, программа не скомпилируется и выдаст синтаксическую ошибку:
System.out.println(3 + ); // так писать нельзяБинарными операции бывают не всегда. Существуют еще унарные, с одним операндом, и тернарные, с тремя.
Унарный минус
Один и тот же знак иногда означает разные операции. Посмотрите на минус:
System.out.println(-3); // -3Здесь минус стоит перед одним числом и работает как унарный оператор. Он берет число 3 и возвращает противоположное ему, то есть -3.
Когда минус стоит между двумя числами, это уже вычитание:
System.out.println(5 - 2); // 3
System.out.println(10 - 7); // 3Разница особенно заметна на отрицательных числах:
System.out.println(5 - -2); // 7Слева идет вычитание 5 - (...), а справа унарный минус превращает 2 в отрицательное число. Получается 5 - (-2), и это дает 7. Минус на минус дает плюс, ровно как в школе.
Значение минуса зависит от соседей. Рядом с двумя числами это вычитание, перед одним числом это смена знака. Запись -3 одновременно и само число, и оператор с операндом. У многих языков программирования такая же логика, так что вещь это привычная.
Унарным бывает и плюс. Запись +5 лишь подчеркивает, что число положительное, и значения не меняет:
System.out.println(+5); // 5Остальные арифметические операторы *, / и % всегда бинарные, им нужны два операнда. Только плюс и минус умеют работать сразу в двух ролях, и как бинарные, и как унарные.
Задание
Напишите программу, которая посчитает разность между числами 6 и -81 и выведет ответ на экран.
Полезное
Отбивайте арифметические операторы пробелами от операндов, это хороший стиль программирования.
Ваше упражнение проверяется по этим тестам
import static org.assertj.core.api.Assertions.assertThat;
import java.io.ByteArrayOutputStream;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
class AppTest {
public static void main(String[] args) {
final var expected = "87";
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
App.main(null);
final var actual = out.toString().trim();
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println(actual);
assertThat(actual).isEqualTo(expected);
}
}Решение учителя откроется через:
20:00
