Арифметические и математические операторы Java с примерами
Java содержит набор встроенных математических операторов для выполнения простых арифметических операций над переменными. Они достаточно просты. Также есть класс Java Math, который содержит методы для выполнения более сложных математических вычислений.
Математические операторы Java
Четыре основных математических оператора.
Сложение
Оператор + выполняет сложение двух значений. Это может быть добавление двух констант, константы и переменной или переменной и переменной. Вот несколько примеров:
Оператор + заменит два значения на сумму двух значений во время выполнения. Таким образом, в месте, где записано выражение sum1 + 33, во время выполнения будет заменено суммой значения sum1 и постоянного значения 33.
Конечно, вы можете создавать более длинные цепочки дополнений, и таким образом добавлять более двух чисел. Вот пример добавления трех или более значений вместе:
Обычно используемая математическая операция над переменными – установить переменную равной ее собственному значению плюс другое значение. Вот как это выглядит:
Вторая строка этого примера устанавливает переменную суммы, равную ее собственному значению (перед присвоением нового значения) + 20. Что означает 10 + 20.
Поскольку добавление значения в переменную Java является очень распространенной операцией, есть встроенный оператор для этой конкретной цели. Это оператор + =. Вот пример выше, переписанный с использованием оператора:
Вторая строка в этом примере добавляет 20 к переменной result. Это эквивалентно коду результата = результат + 20;
Вычитание
Оператор “-” выполняет вычитание одного значения из другого. Это может быть вычитание постоянного значения из другого постоянного значения, постоянного значения из переменной или переменной из переменной. Вот несколько примеров:
Оператор “-” заменит два значения разницей между двумя значениями, так же как с оператором +.
Вы можете создавать более длинные цепочки вычитаний. Вот пример вычитания двух значений из другого в дном выражении Java:
Это работает и для переменных.
Помните, минус минус равно плюс, как в обычной математике. Вот пример этого:
После выполнения этого математического выражения переменная diff будет содержать значение 210, потому что -(- 10) равно +10 согласно стандартным математическим правилам.
Как и в случае с дополнением, Java содержит оператор, специально предназначенный для вычитания значения из переменной и присвоения результата переменной. Вот первое, как это будет выглядеть без этого оператора:
Вот как выглядит та же математическая операция с оператором “-=”:
Умножение
Оператор * выполняет умножение двух значений. Значения могут быть либо двумя постоянными значениями, переменной и постоянным значением, либо двумя переменными. Вот несколько примеров:
Оператор * заменит математическое выражение умножения на произведение двух значений во время выполнения.
Вы можете создавать более длинные цепочки умножения, используя оператор *. Вот пример:
Умножение переменной на значение и присвоение значения обратно переменной является обычной математической операцией в приложениях Java. Поэтому Java содержит явный оператор для этой операции. Оператор “*=”. Вот пример, как будет выглядеть вычисление без оператора:
Вторая строка этого примера умножает значение переменной результата (до присвоения результата этого вычисления) на 20 и присваивает значение обратно переменной результата.
Вот как выглядит та же математическая операция с оператором:
Деление
Оператор “/” выполняет деление одного значения на другое. Это может быть деление одной константы на другую, переменной на константу или одной переменной на другую переменную.
Вы можете объединить несколько значений для деления, но из-за приоритета математического оператора Java (объясненного позже) вы должны обратить внимание на то, как объединяете значения.
После выполнения этого математического выражения переменная деления будет содержать значение 5. Это результат, потому что математическое выражение рассчитывалось сначала путем деления 100 на 10 (= 10), а затем 10 на 2 (= 5). Но что, если вы хотели сначала разделить 10 на 2 (= 5), а затем разделить 100 на 5 (= 20)? Вы должны были бы использовать скобки для достижения этого, например:
Java также содержит оператор быстрого доступа для деления значения переменной на другое значение и присвоения этого значения обратно переменной. Оператор “/=”. Вот как выглядит математическая операция без оператора:
Во второй строке этого примера значение переменной результата (значение, которое оно имело до присвоения результата этого вычисления) делится на 5 и присваивает результат обратно переменной результата.
Вот как выглядит та же математическая операция с оператором “/=”:
Остаток / Модуль
Математическая операция остаток выполняет целочисленное деление одного значения на другое и возвращает остаток этого деления. Оператор для операции остаток / по модулю – это символ % (процент). Вот пример работы модуля:
100, деленное на 9 – это 11 с остатком 1 (11 умножить на 9 – 99). Таким образом, переменной остатка присваивается значение 1.
Java также содержит оператор быстрого доступа для деления переменной на другое значение и назначения оставшейся части этого деления переменной. Оператор “%=”. Вот пример:
Вторая строка этого примера назначит значение 1 переменной результата. 1 является результатом 100% 9.
Приоритет оператора Java Math
Как только вы начинаете комбинировать математические операторы Java в математических выражениях, становится важным контролировать, когда и какие вычисления выполнять, чтобы получить желаемый результат. Математические операторы Java имеют естественный приоритет операторов, который аналогичен приоритетам стандартных математических операторов.
Математические операторы * и / для умножения и деления имеют приоритет над операторами + и -. Это означает, что умножения и деления вычисляются перед сложением и вычитанием в математических выражениях. В случае наличия нескольких операторов * и / они будут рассчитаны слева направо. Посмотрите на это математическое выражение:
Сначала выполняются умножения и деления. Есть две группы из трех умножений и делений. Каждая группа выполняется слева направо:
После вычисления умножения и деления математическое выражение выглядит так:
Теперь сложения и вычитания выполняются. Таким образом, значение, присвоенное переменной результата, равно 2000 + 600 = 2600.
Вы можете контролировать приоритет оператора и последовательность вычислений в математических выражениях, используя круглые скобки. Выражения в скобках имеют более высокий приоритет, чем любой другой оператор. Внутри скобок применяется нормальный приоритет оператора. Вот математическое выражение из ранее, но с вставленными скобками, которые изменяют вычисления:
Значение 100 все еще умножается на 100 (= 10 000), но теперь оно делится на 5 + 200 (= 205) вместо 5. После этого деления результат умножается на 3, а затем делится на 2. Результат выполнения 72 (округление вычислений влияет на результат).
Java Integer Math
Математические операции, выполняемые с целочисленными типами Java (byte, short, int и long), ведут себя немного иначе, чем обычные математические операции. Поскольку целочисленные типы не могут содержать дроби, в каждом вычислении с одним или несколькими целочисленными типами все дроби в результате обрезаются. Посмотрите на это математическое выражение:
Результат этого деления будет 12,5, но так как два числа являются целыми числами, фракция .5 обрезается. Результат, следовательно, всего 12.
Округление также происходит в подрезультатах больших вычислений.
С плавающей точкой Math
Java содержит два типа данных с плавающей точкой: float и double. Они могут содержать дроби в числах. Если нужны дробные выражения в математических выражениях, вы должны использовать один из этих типов данных. Вот пример математического выражения с плавающей точкой:
Несмотря на то, что переменная результата теперь имеет тип с плавающей запятой (double), конечный результат по-прежнему равен 12 вместо 12,5. Причина в том, что оба значения в математическом выражении (100 и 8) оба являются целыми числами. Таким образом, результат деления одного на другое сначала преобразуется в целое число (12), а затем присваивается переменной результата.
Чтобы избежать округления вычислений, необходимо убедиться, что все типы данных, включенные в математическое выражение, являются типами с плавающей запятой. Например, вы могли бы сначала присвоить значения переменным с плавающей запятой следующим образом:
Теперь переменная результата будет иметь значение 12,5.
В Java есть способ заставить все числа в расчете быть переменными с плавающей точкой. Вы ставите числа с большой буквы F или D. Вот пример:
Обратите внимание на прописные буквы D после каждого числа. Этот верхний регистр D говорит Java, что эти числа должны интерпретироваться как числа с плавающей запятой, и, таким образом, деление должно быть делением с плавающей запятой, которое сохраняет дроби вместо их обрезания.
На самом деле вы также можете сделать число длинным, добавив суффикс числа к верхнему регистру L, но long по-прежнему является целочисленным типом, поэтому он не будет сохранять дробные части в вычислениях.
Точность с плавающей точкой
Типы данных с плавающей точкой не являются точными на 100%. Вы можете столкнуться с ситуациями, когда числа со многими дробями не складываются с ожидаемым числом. Если вычисление с плавающей запятой приводит к числу с большим количеством дробей, чем может обработать число с плавающей запятой или двойное число, дроби могут быть обрезаны. Конечно, заданная точность может быть более чем достаточной для многих типов вычислений, но имейте в виду, что дроби могут фактически быть отсечены.
Первый оператор System.out.println() правильно печатает значение 0.0, которое является начальным значением переменной resultDbl3.
Однако второй оператор System.out.println() выводит несколько странный результат. Добавление значения 0,01 к 0 всего 100 раз должно привести к значению 1,0, верно? Но каким-то образом окончательный результат 1.0000000000000007. Как видите, что-то не так во фракциях.
Обычно неточность с плавающей запятой незначительна, но все же важно знать об этом.
Класс Java Math
Класс Java Math предоставляет более сложные математические вычисления, чем те, которые предоставляют базовые математические операторы Java. Класс Math содержит методы для:
- нахождения максимального или минимального значений;
- значений округления;
- логарифмических функций;
- квадратного корня;
- тригонометрических функций (sin, cos, tan и т. д.).
Math находится в пакете java.lang, а не в пакете java.math. Таким образом, полное имя класса Math – это java.lang.Math.
Поскольку многие его функции независимы друг от друга, каждый метод будет объяснен в своем собственном разделе ниже.
Основные математические функции
Java.lang.Math содержит набор базовых математических функций для получения абсолютного значения, наибольшего и наименьшего из двух значений, округления значений, случайных значений и т. д.
Math.abs()
Функция Math.abs() возвращает абсолютное положительное значение переданного ей параметра. Если значение параметра является отрицательным, знак “-” удаляется и возвращается положительное значение, соответствующее отрицательному значению без знака. Вот два примера:
Абсолютное значение 10 равно 10. Абсолютное значение -20 равно 20.
Метод Math.abs() представлен в 4 версиях:
Какой из этих методов вызывается, зависит от типа параметра, передаваемого методу Math.abs().
Math.ceil()
Функция округляет значение с плавающей запятой до ближайшего целого числа. Округленное значение возвращается как двойное. Вот пример:
После выполнения этого Java-кода переменная ceil будет содержать значение 8.0.
Math.floor()
Функция Math.floor() округляет значение с плавающей запятой до ближайшего целочисленного значения. Округленное значение возвращается как двойное. Вот пример:
После выполнения ceil будет содержать значение 8.0.
Math.floorDiv()
Метод Math.floorDiv() делит одно целое число (int или long) на другое и округляет результат до ближайшего целочисленного значения. Если результат положительный, эффект такой же, как при использовании оператора “/” (деления), описанного ранее в этом тексте.
Однако, если результат отрицательный, результат не тот же. С помощью оператора “/” дроби просто усекаются. Для положительных чисел это соответствует округлению в меньшую сторону, для отрицательных – в большую. Метод floorDiv() округляет до ближайшего отрицательного целого числа, вместо того, которое будет происходить при усечении дроби.
Это показывает разницу между оператором “/” и Math.floorDiv().
Math.min()
Метод Math.min() возвращает наименьшее из двух значений, переданных ему в качестве параметра:
После выполнения этого кода переменная min будет содержать значение 10.
Math.max()
Метод Math.max() возвращает наибольшее из двух значений, переданных ему в качестве параметра:
После выполнения этого кода переменная max будет содержать значение 20.
Math.round()
Метод Math.round() округляет число с плавающей точкой или удваивается до ближайшего целого числа, используя обычные правила математического округления (вверх или вниз):
После выполнения этих двух операторов Java переменная roundedDown будет содержать значение 23,0, а переменная roundndedUp будет содержать значение 24,0.
Math.random()
Метод Math.random() возвращает случайное число с плавающей запятой в диапазоне от 0 до 1. Конечно, это число не полностью случайное, но результат некоторого вычисления, которое должно сделать его настолько непредсказуемым, насколько это возможно. Вот пример:
Чтобы получить случайное значение между 0 и, например, 100, умножьте значение, возвращаемое Math.random(), на максимальное число (например, 100). Вот пример того, как это может выглядеть:
Если вам нужно целочисленное значение, используйте метод round(), floor() или ceil().
Экспоненциальные и логарифмические функции
Класс Java Math также содержит набор функций, предназначенных для экспоненциальных и логарифмических вычислений.
Math.exp()
Функция Math.exp() возвращает число Эйлера, возведенное в степень значения, указанного в качестве параметра:
Math.log()
Метод Math.log() предоставляет логарифм данного параметра. Основой для логарифма является число Эйлера. Таким образом, Math.log() предоставляет обратную функцию Math.exp(). Вот пример:
Math.log10()
Метод Math.log10 работает подобно методу Math.log(), за исключением того, что использует 10 как основу для вычисления логарифма вместо числа Эйлера:
Math.pow()
Функция Math.pow() принимает два параметра. Метод возвращает значение первого параметра, возведенное в степень второго параметра. Вот пример:
Другими словами, пример Math.pow() вычисляет значения 2, 2 и 28, которые равны 4 и 256.
Math.sqrt()
Метод Math.sqrt() вычисляет квадратный корень заданного ему параметра:
Тригонометрические функции
Класс Java Math содержит набор тригонометрических функций. Эти функции могут вычислять значения, используемые в тригонометрии, такие как синус, косинус, тангенс и т. д.
Какие математические операции есть в java

Большинство операций в Java аналогичны тем, которые применяются в других си-подобных языках. Есть унарные операции (выполняются над одним операндом), бинарные — над двумя операндами, а также тернарные — выполняются над тремя операндами. Операндом является переменная или значение (например, число), участвующее в операции. Рассмотрим все виды операций.
В арифметических операциях участвуют числа. В Java есть бинарные арифметические операции (производятся над двумя операндами) и унарные (выполняются над одним операндом). К бинарным операциям относят следующие:
операция сложения двух чисел:
операция вычитания двух чисел:
операция умножения двух чисел
операция деления двух чисел:
При делении стоит учитывать, что если в операции участвуют два целых числа, то результат деления будет округляться до целого числа, даже если результат присваивается переменной float или double:
Чтобы результат представлял число с плавающей точкой, один из операндов также должен представлять число с плавающей точкой:
получение остатка от деления двух чисел:
Также есть две унарные арифметические операции, которые производятся над одним числом: ++ (инкремент) и — (декремент). Каждая из операций имеет две разновидности: префиксная и постфиксная:
Предполагает увеличение переменной на единицу, например, z=++y (вначале значение переменной y увеличивается на 1, а затем ее значение присваивается переменной z)
Также представляет увеличение переменной на единицу, например, z=y++ (вначале значение переменной y присваивается переменной z, а потом значение переменной y увеличивается на 1)
уменьшение переменной на единицу, например, z=—y (вначале значение переменной y уменьшается на 1, а потом ее значение присваивается переменной z)
z=y— (сначала значение переменной y присваивается переменной z, а затем значение переменной y уменьшается на 1)
Приоритет арифметических операций
Одни операции имеют больший приоритет, чем другие, и поэтому выполняются вначале. Операции в порядке уменьшения приоритета:
++ (постфиксный инкремент), — (постфиксный декремент)
++ (префиксный инкремент), — (префиксный декремент)
* (умножение), / (деление), % (остаток от деления)
Приоритет операций следует учитывать при выполнении набора арифметических выражений:
Вначале будет выполняться операция инкремента ++b , которая имеет больший приоритет — она увеличит значение переменной b и возвратит его в качестве результата. Затем выполняется умножение 5 * ++b , и только в последнюю очередь выполняется сложение a + 5 * ++b
Скобки позволяют переопределить порядок вычислений:
Несмотря на то, что операция сложения имеет меньший приоритет, но вначале будет выполняться именно сложение, а не умножение, так как операция сложения заключена в скобки.
Ассоциативность операций
Кроме приоритета операции отличаются таким понятием как ассоциативность . Когда операции имеют один и тот же приоритет, порядок вычисления определяется ассоциативностью операторов. В зависимости от ассоциативности есть два типа операторов:
Левоассоциативные операторы, которые выполняются слева направо
Правоассоциативные операторы, которые выполняются справа налево
Так, некоторые операции, например, операции умножения и деления, имеют один и тот же приоритет. Какой же тогда будет результат в выражении:
Стоит нам трактовать это выражение как (10 / 5) * 2 или как 10 / (5 * 2) ? Ведь в зависимости от трактовки мы получим разные результаты.
Все арифметические операторы (кроме префиксного инкремента и декремента) являются левоассоциативными, то есть выполняются слева направо. Поэтому выражение 10 / 5 * 2 необходимо трактовать как (10 / 5) * 2 , то есть результатом будет 4.
Операции с числами с плавающей точкой
Следует отметить, что числа с плавающей точкой не подходят для финансовых и других вычислений, где ошибки при округлении могут быть критичными. Например:
В данном случае переменная d будет равна не 0.9, как можно было бы изначально предположить, а 0.8999999999999999. Подобные ошибки точности возникают из-за того, что на низком уровне для представления чисел с плавающей точкой применяется двоичная система, однако для числа 0.1 не существует двоичного представления, также как и для других дробных значений. Поэтому в таких случаях обычно применяется класс BigDecimal, который позволяет обойти подобные ситуации.
Operators in Java and its Types
![]()
Operators are the constructs that can manipulate the values of the operands. Consider the expression 2 + 3 = 5, here 2 and 3 are operands and + is called operator. In this article on operators, the goal is to get you the expertise required to get started and work with operators in Java.
Java supports the following types of operators:
- Arithmetic Operators
- Assignment Operators
- Logical Operators
- Relational Operators
- Unary Operators
- Bitwise Operators
- Ternary Operators
- Shift Operators
Let’s focus on each of these operators one by one.
Arithmetic Operators in Java
Arithmetic Operators are used to performing mathematical operations like addition, subtraction, etc. Assume that A = 10 and B = 20 for the below table.
Consider the below example:
Output:
Assignment Operators in Java
An Assignment Operator is an operator used to assign a new value to a variable. Assume A = 10 and B = 20 for the below table.
Consider the below example:
Moving ahead in Java operator's tutorial, let’s see what are comparison operators.
Relational Operators in Java
These operators compare the values on either side of them and decide the relation among them. Assume A = 10 and B = 20.
Consider the below example:
Next up, let’s focus on logical operators in Java.
Logical Operators in Java
The following are the Logical operators present in Java:
Consider the below example:
Now let’s see unary operators in Java.
Unary Operator in Java
Unary operators are the one that needs a single operand and are used to increment a value, decrement or negate a value.
Consider the following example:
Moving ahead, let’s understand bitwise operator in Java
Bitwise Operator in Java
Bitwise operations directly manipulate bits. In all computers, numbers are represented with bits, a series of zeros and ones. In fact, pretty much everything in a computer is represented by bits. Assume that A = 10 and B = 20 for the below table.
Consider the example shown below:
Next up, let’s focus on the ternary operator in Java
Ternary Operators in Java
The ternary operator is a conditional operator that decreases the length of code while performing comparisons and conditionals. This method is an alternative for using if-else and nested if-else statements. The order of execution for this operator is from left to right.
Syntax:
- Condition: It is the expression to be evaluated which returns a boolean value.
- Statement 1:It is the statement to be executed if the condition results in a true state.
- Statement 2:It is the statement to be executed if the condition results in a false state.
Consider the below example:
Output — Max of three numbers = 30
Moving ahead to the last java operator, let’s understand Shift operators in Java.
Shift Operators in Java
Shift operators are used to shifting the bits of a number left or right, thereby multiplying or dividing the number. There are three different types of shift operators, namely left shift operator()<<, signed right operator(>>) and unsigned right shift operator(>>>).
Syntax:
Consider the following example:
With this, we come to an end of this article on the different Java operators. I hope this article was informative to you.
If you wish to check out more articles on the market’s most trending technologies like Artificial Intelligence, DevOps, Ethical Hacking, then you can refer to Edureka’s official site.
Do look out for other articles in this series which will explain the various other aspects of Java.
Операции над числами в Java

Привет! Сегодня мы рассмотрим очень важную тему, а именно — операции над числами в Java . Числа в программировании повсюду. Если копнуть в школьный курс, можно вспомнить, что вся информация в компьютере представлена в числовом формате — комбинациями нулей и единиц — которое еще называют двоичным кодом. Операций над числами в программировании существует великое множество, поэтому мы рассмотрим наиболее важные из них с примерами 🙂
Арифметические операции
- равно ( == )
- больше ( > )
- меньше ( < )
- больше либо равно ( >= )
- меньше либо равно ( <= )
- не равно ( != )
- y = z , то есть у = 256
- x = y, то есть x = 256
Унарные операции
Унарный минус. Он меняет знак числа на противоположный.
Вывод в консоль:
Мы использовали унарный минус два раза. В результате наше число стало сначала отрицательным, а потом снова положительным!
Инкремент ( ++ ) и декремент ( — )
Операция ++ увеличивает число на единицу, а операция — уменьшает на эту же самую единицу.
Вывод в консоль:
Комбинированные операции
- Присваивание
- Арифметическая операция
- +=
- -=
- *=
- /=
- %=
Логические операции
! — оператор “НЕ”. Меняет значение булевой переменной на противоположное
Вывод в консоль:
&& — оператор “И”. Возвращает значение true только в том случае, если оба операнда являются true .
Вывод в консоль:
Результатом первой операции является false , поскольку одно из условий является ложным, а именно 100 > 200. Оператору && для того, чтобы вернуть true требуется, чтобы истинными были все условия (как во второй строке, например).
|| — оператор “ИЛИ”. Возвращает true , когда хотя бы один из операндов истинный.
Здесь наш предыдущий пример уже отработает по-другому:
Вывод в консоль:
Выражение 100 > 200 по-прежнему ложно, но оператору “или” вполне достаточно, что первая часть (100 > 10) является истинной.