logo

העדיפות הגבוהה ביותר בג'אווה

כשאנחנו מדברים על קדימות בג'אווה, האופרטור בראש ובראשונה. ישנם כללים מסוימים המוגדרים ב-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
העדיפות הגבוהה ביותר בג'אווה