Коли ми говоримо про пріоритет у Java, насамперед маємо на увазі оператор. Існують певні правила, визначені в Java, щоб визначити порядок, у якому обчислюються оператори у виразі. Пріоритет оператора це концепція визначення групи термінів у виразі. Пріоритет оператора відповідає за обчислення виразів. в Java , круглі дужки() і Індекс масиву[] мають найвищий пріоритет у Java. Наприклад, додавання та віднімання мають вищий пріоритет, ніж оператори зсуву вліво та вправо.
Нижче наведено визначену таблицю, у якій оператор найнижчого пріоритету відображається у верхній частині.
Пріоритет | Оператор | Тип | Асоціативність |
---|---|---|---|
1) | = += -= *= /= %= | призначення Присвоєння доповнення Віднімання завдання Завдання на множення Призначення поділу Присвоєння модуля | Справа наліво |
2) | ? : | Тернарний умовний | Справа наліво |
3) | || | Логічне АБО | Зліва направо |
4) | && | Логічне І | Зліва направо |
5) | | | Побітове включне АБО | Зліва направо |
6) | ^ | Порозрядне виключаюче АБО | Зліва направо |
7) | & | Побітове І | Зліва направо |
8) | != == | Реляційне не дорівнює Реляційний дорівнює | Зліва направо |
9) | < <= > >= екземпляр=> | Реляційне менше ніж Відношення менше або дорівнює Реляційне більше ніж Відношення більше або дорівнює Порівняння типів (лише об'єкти) | Зліва направо |
10) | >> << >>> | Порозрядний зсув вправо з розширенням знака Порозрядний зсув вліво Порозрядний зсув вправо з нульовим розширенням | Зліва направо |
одинадцять) | - + | Віднімання Доповнення | Зліва направо |
12) | * / % | Множення Поділ Модуль | Зліва направо |
13) | - + ~ ! (тип) | Унарний мінус Унарний плюс Унарне порозрядне доповнення Унарне логічне заперечення Унарний тип | Справа наліво |
14) | ++ -- | Унарний постінкремент Унарний постдекремент | Справа наліво |
п'ятнадцять) | · () [] | Оператор крапка Круглі дужки Індекс масиву | Зліва направо |
Порядок пріоритету
Коли два оператори використовують один операнд, першим йде оператор із найвищим пріоритетом. Наприклад, x + y * z розглядається як x + (y * z), тоді як x * y + z розглядається як (x * y) + z, оскільки оператор * має найвищий пріоритет у порівнянні з оператором +.
пасхальні яйця на android
Асоціативність
Асоціативність — це концепція, пов’язана з операторами, які застосовуються, коли у виразі входять два оператори з однаковим пріоритетом. Концепція асоціативності дуже допомагає вийти з цієї ситуації. Припустимо, ми маємо вираз a + b - c (оператори + і - мають однаковий пріоритет) , і цей вираз буде розглядатися як (a + (b - c)) оскільки ці оператори є асоціативними справа наліво. З іншого боку, a+++--b+c++ буде розглядатися як ((a++)+((--b)+(c++))) оскільки унарні оператори постінкременту та декременту є асоціативними справа наліво.
Нижче наведено приклад, щоб зрозуміти, як вираз обчислюється за допомогою порядку пріоритету та асоціативності?
Вираз: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3
рішення:
1) У наведеному вище виразі оператор найвищого пріоритету () . Отже, дужки йдуть першими і обчислюють першими.
х = 4 / 2 + 8 * 4 - 7 % 3
2) Тепер, /, * і % оператори мають однаковий пріоритет і найвищий із + і - Тут ми використовуємо концепцію асоціативності для їх вирішення. Асоціативи цих операторів розташовані зліва направо. Так, / оператор іде спочатку, а потім * і % одночасно.
рядок java indexof
х = 2 + 8 * 4 - 7 % 3
х = 2 + 32 - 7 % 3
х = 2 + 32 - 1
3) Тепер, + і - обидва оператори також мають однаковий пріоритет, а асоціативність цих операторів менше праворуч. Так, + оператор піде спочатку, а потім - піду.
х = 34 - 1
х = 33
масив байтів до рядка java
HighestPrecedence.java
//import classes import java.util.*; //creating HighestPrecedence class to evaluate the expression public class HighestPrecedence { //main() method starts public static void main(String[] args) { //initialize variables with default values int x = 2; int y = 5; int z = 12; //calculating exp1, exp2, and exp3 int exp1 = x +(z/x+(z%y)*(z-x)^2); int exp2 = z/x+y*x-(y+x)%z; int exp3 = 4/2+8*4-(5+2)%3; //printing the result System.out.println(exp1); System.out.println(exp2); System.out.println(exp3); } }
Вихід