Java: План и дорожная карта развития + СОДЕРЖАНИЕ.
статья №6 Java: Арифметические операции.
Приветствую Тебя, мой дорогой друг. В прошлой статье мы затронули тему арифметических операций языка Java, а так же посмотрели примеры с какими приколюхами можно столкнуться. Надеюсь ты самостоятельно потренировался в решении простых примеров.
Теперь по теме статьи "Приоритет арифметических операций". Итак, рассмотрим каким образом строится приоритет выполнения арифметических операций в Java. Из школьной программы, ты наверняка знаешь что пара действий умножение и деление имеют набольший приоритет по сравнению со сложением и вычитанием. А если операции имеют равный приоритет, то действия выполняются слева на право. И еще, приоритет можем менять с помощью круглых скобок, то есть действие в заключенное в скобках выполняется раньше. Так вот, данная логика справедлива и для Java.
В Java, наивысший приоритет имеют операции постинкремент(i++), постдекремент(i--), префиксный инкремент(++i) и префиксный декремент(--i), меньший приоритет имеют умножение(*), деление(/), остаток от деления(%), ну и замыкающие с самым наименьшим приоритетом сложение(+) и вычитание(-).
Начнем с несложных примеров:
Смотрим картинку ниже. В начале выполняется операция префиксный инкремент "++y", которая увеличит значение на единицу, тем самым "y = 4 + 1" запомнили первый операнд, далее, операция префиксный декремент "--y" которая уменьшит значение "y" на единицу, "y = 5 - 1" это значение для второго операнда, ну и применим операцию сложения к двум этим операндам "5 + 4 = 9".
Второй пример, смотрим картинку ниже. В начале выполняем операцию префиксный декремент "--y", которая уменьшит наш y на единицу"y = 4 - 1", делее операция постинкремент"y++", которая должна увеличить "y" на единицу, но только после текущего действия, точнее когда в следующий раз обратимся к ней(к переменной "y"), к примеру для вывода на экран, а пока она имеет значение 3, следовательно "3 + 3 = 6".
Тот же пример только с обращением к "y". Итак, "y" изменил свое значение в момент вывода его на экран, равен 4.
Смотрим картинку ниже. Чуть сложнее, начинаем с левой крайней операции постинкремент"y++" помним что при следующем обращении к "y" увеличим ее значение на единицу, пока же текущее значение y = 4 запомнили, далее, правая крайняя операция постинкремент"y++" знаем что у нас в заначке единица, следовательно "y" увеличиваем на единицу "y = 4 + 1" теперь "y = 5" запомнили, но опять же, ныкаем новую единицу для следующего обращения к "y", далее, по приоритетности необходимо вернуться к умножению на 2, помним что "y" ранее был 4 следовательно 4 * 2 результат от произведения равен 8, ну и осталось просуммировать слева на право "z = 2 + 8 + 5". На следующей строчке вывод "y" на экран, но так как ранее была операция постинкремент"y++", не забываем про единичку в заначке и увеличиваем "y" на единицу "y = 6".
Пока с приоритетами закончим.
Вторая часть статьи Операторы присвоения. Их несколько (=, +=, -=,*=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=), но рассмотрим всего лишь часть, вторую же часть соответственно в другой статье. Про одинарный знак равно "=" вы уже знаете - это простое присвоение значения переменной. А если так "+=", немного интереснее, но то же все просто, к примеру Z += 2 аналогично записи Z = Z + 2, Z -= 2 то же самое что и Z = Z - 2, Z *= 2 опять же Z = Z * 2 и так далее. Таким образом можете сокращать свою писанину=). В этих операциях присвоения, то же есть приоритет выполнения действий.
Предположу, что данный пример "z /= y - 2" вы решили вот так "z = z / y - 2" результат -1, но на самом деле будет так "z = z /( y - 2)" результат 2, следовательно приоритет выполнения справа на лево или другими словами все что по правую строну от знака равно, как бы обрамлено в скобках и имеет приоритет и так с "+=, -=,*=, /=, %=" так далее.
Следующий пример, более наглядный.
Думаю, пора закончить =).
Попробуй порешать самостоятельно несколько заданий, понять как Java решает подобные примеры:
Java прекрасно решает, а ты =)?
Поставь лайк если понравилась статья, тебе всего лишь "клик", а мне радости полные штаны =). Подписывайся на канал, будет много интересных публикаций =).