כשאנחנו מדברים על קדימות בג'אווה, האופרטור בראש ובראשונה. ישנם כללים מסוימים המוגדרים ב-Java כדי לציין את הסדר שבו מוערכים האופרטורים בביטוי. עדיפות מפעיל הוא מושג של קביעת קבוצת המונחים בביטוי. עדיפות האופרטור אחראית להערכת הביטויים. ב Java , סוגריים() ו מערך מנוי[] יש את העדיפות הגבוהה ביותר ב-Java. לדוגמה, חיבור וחיסור הם בעלי עדיפות גבוהה יותר מהאופרטורים שמאלה משמרת וימין.
להלן טבלה המוגדרת שבה מופיע אופרטור העדיפות הנמוכה ביותר בראשה.
עֲדִיפוּת | מַפעִיל | סוּג | אסוציאטיביות |
---|---|---|---|
1) | = += -= *= /= %= | מְשִׁימָה מטלת הוספה מטלת חיסור מטלת כפל מטלת חטיבה הקצאת מודולוס | מימין לשמאל |
2) | ? : | טרנרי מותנה | מימין לשמאל |
3) | || | OR לוגי | משמאל לימין |
4) | && | AND הגיוני | משמאל לימין |
5) | | | כולל OR | משמאל לימין |
6) | ^ | OR בלעדי קצת | משמאל לימין |
7) | & | Bitwise AND | משמאל לימין |
8) | != == | יחסי אינו שווה ל יחסי שווה ל | משמאל לימין |
9) | < <= > >= מופע של=> | יחסי פחות מ יחסי פחות או שווה יחסי גדול מ יחסי גדול או שווה השוואת סוגים (אובייקטים בלבד) | משמאל לימין |
10) | >> << >>> | העברה ימינה באופן חלקי עם הארכת סימן העברה שמאלה באופן חלקי העברה ימינה באופן חלקי עם אפס הארכה | משמאל לימין |
אחד עשר) | - + | חִסוּר חיבור | משמאל לימין |
12) | * / % | כֶּפֶל חֲלוּקָה מודולוס | משמאל לימין |
13) | - + ~ ! (סוג) | מינוס לא נורמלי Unary plus השלמה סיבית לא נעימה שלילה לוגית לא נורית Typecast Unary | מימין לשמאל |
14) | ++ -- | תוספת שלאחר תוספת לא נורמלי לאחר ירידה | מימין לשמאל |
חֲמֵשׁ עֶשׂרֵה) | · () [] | מפעיל נקודה סוגריים מנוי למערך | משמאל לימין |
סדר עדיפות
כאשר שני אופרטורים חולקים אופרנד בודד, האופרטור בעל העדיפות הגבוהה ביותר הולך ראשון. לדוגמה, x + y * z מטופלים כ-x + (y * z), בעוד ש-x * y + z מטופלים כ-(x * y) + z מכיוון שלאופרטור * יש קדימות גבוהה ביותר בהשוואה לאופרטור +.
יישר תמונת css
אסוציאטיביות
אסוציאטיבי הוא מושג הקשור לאופרטורים המיושמים כאשר שני אופרטורים בעלי אותה קדימות באים בביטוי. מושג האסוציאטיביות עוזר מאוד לצאת ממצב זה. נניח שיש לנו ביטוי a + b - c (לאופרטורים + ו- יש אותה עדיפות) , והביטוי הזה יטופל כמו (a + (ב - ג)) כי האופרטורים האלה הם אסוציאטיביים מימין לשמאל. מצד שני, a+++--b+c++ יטופל כמו ((a++)+((--b)+(c++)))) מכיוון שהאופרטורים הלא-נאריים שלאחר ההגדלה והירידה הם אסוציאטיביים מימין לשמאל.
דוגמה מוגדרת להלן כדי להבין כיצד ביטוי מוערך באמצעות סדר עדיפות ואסוציאטיביות?
ביטוי: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3
פִּתָרוֹן:
1) בביטוי שלעיל, אופרטור הבכורה הגבוה ביותר הוא () . אז, הסוגריים הולכים ראשון ומחושבים ראשון.
x = 4 / 2 + 8 * 4 - 7 % 3
2) עכשיו, /, * ו % למפעילים יש את אותה העדיפות והגבוהה ביותר מה + ו - כאן, אנו משתמשים במושג האסוציאטיביות כדי לפתור אותם. האסוציאטיביות של אופרטורים אלה הם משמאל לימין. כך, / המפעיל הולך קודם ואחר כך * ו % בּוֹ זְמַנִית.
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
חציית עצים לא מסודרת
x = 2 + 32 - 1
3) עכשיו, + ו - גם לאופרטורים יש את אותה קדימות, והאסוציאטיביות של אופרטורים אלה שמא ימינה. כך, + המפעיל יעבור קודם, ואחר כך - ילך.
x = 34 - 1
x = 33
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); } }
תְפוּקָה
פקודות sql dl