אופרטורים ב-Java

[15 בפברואר 2009] [15 תגובות]

בשיעור שעבר למדנו על משתנים והפעם נלמד כיצד לבצע פעולות עליהם. הפעולות מתבצעות באמצעות אופרטורים.

אופרטורים חישוביים

ניתן לבצע את הפעולות החישוביות הבאות על מספרים שלמים (int) ומספרים ממשיים (double):

+x+yאופרטור חיבור. חיבור שני מספרים
-x-yאופרטור חיסור. הפחתת ערכו של y מערכו של x
*x*yאופרטור כפל. הכפלת x ב-y
/x/yאופרטור חילוק. חלוקת x ב-y
%x%yאופרטור שארית. כמה נשאר לאחר שמחלקים את x ב-y

כאשר מחלקים שני מספרים שלמים (int) מתקבל תמיד מספר שלם. לדוגמה:

int x = 10;
int y = 4;
int z = x / y;
System.out.println(z);

כידוע, 10 (ערכו של x) לחלק ל-4 (ערכו של y) שווה לשתיים וחצי (2.5) אך מכיוון ש-x, y ו-z הם שלמים, התוצאה היא למעשה 2. כל ערך לאחר הנקודה העשרונית נעלם. למעשה, מספיק שאחד מהמשתנים (x, y או z) יהיו מטיפוס int על מנת לגרום לחלוקה מסוג זה. אם נרצה חלוקה של מספרים ממשיים, נגדיר את כל המשתנים מטיפוס double.

דוגמה לאופרטור השארית (ששמו מודולו):

int x = 11;
int y = 4;
int z = x % y;

4 (הערך של y) נכנס פעמיים בתוך 11 (הערך של x) ולכן השארית היא 3.

אופרטורי השוואה עם תשובה בוליאנית

ניתן להשתמש באופרטורים הבאים על מנת להשוות ערכים של משתנים והתוצאה המתקבלת היא משתנה בוליאני:

סימןשםדוגמה לשאלהתרגום לעברית
==שיוויוןif (x==40)האם x שווה ל-40 ?
!=חוסר-שיוויוןif (x!=40)האם x שונה מ-40 ?
>גדול מ-if (x>40)האם x גדול מ-40 ?
>=גדול שווה מ-if (x>=40)האם x גדול או שווה ל-40 ?
<קטן מ- if (x<40)האם x קטן מ-40 ?
<=קטן שווה מ-if (x<=40)האם x קטן או שווה ל-40 ?

לדוגמה:

int x = 10;
int y = 5;
int z = x / y;
boolean answer = (z == 2);

מכיוון ש-10 לחלק ל-5 זה 2 אז הערך של z יהיה 2. ערכו של answer יהיה true מכיוון שההשוואה נכונה.

שימו לב: אופרטור ההשוואה מכיל שני סימני שווה (==) ואילו אופרטור ההשמה מכיל סימן שווה אחד בלבד!


אופרטורים לוגיים

ישנם אופרטורים הפועלים על משתנים בוליאנים ותוצאתם הוא משתנה בוליאני חדש.

!z = !xלא (NOT). הופך true ל-flase ו-false ל-ture
&z = x & yוגם (AND). אם x ו-y הם true אזי z יהיה true, אחרת z יהיה false
|z = x | yאו (OR). אם x הוא true או y הוא ture אזי z יהיה true, רק אם x ו-y שניהם false אז z יהיה false

דוגמה:

boolean x = true;
System.out.println( !x );

נדפיס את הערך ההפוך ל-x ולכן תודפס המילה false למסך.

סיכום

למדנו לבצע פעולות בסיסיות על המשתנים ו=בעזרת אופרטורים ואנו נשתמש בידע זה בהרחבה בהמשך.

בשיעור הבא, קלט ופלט, נלמד כיצד לתקשר עם המשתמש, לקלוט ממנו מידע ולהציג לו תשובות בהתאם.

אם אהבת את הפוסט, אני שולח מדי פעם למייל עוד פוסטים מעניינים שלא תמיד מגיעים להתפרסם באתר. אתה מוזמן להצטרף לרשימה:
(אני שונא ספאם. אני מבטיח לעולם לא לשלוח משהו לא מעניין)

15 תגובות

  1. Drazick | 2/20/2009 12:57:53 PM
    יש מצב למדריכים שלך על Javascript?
  2. טל | 2/20/2009 1:26:16 PM

    לצערי לא... הקשר בין Javascript ל-Java הוא בעיקר שהשם שלהם דומה.

    אני כרגע מעדיף להתרכז ב-Java.

    עקרונית כל מה שנכתב בשיעורים האלו נכון לכל שפות התיכנות כמעט, פשוט הפקודות מעט שונות בין שפה לשפה. רק בשיעורים הבאים נתחיל לגעת בנושאים שייחודיים רק ל-Java.

     

  3. | 2/20/2009 1:50:05 PM

    אישית, הייתי בטוח שמשתמשים ב || כאופרטור or, וב && כאופרטור and.

    אחרי שקראתי את המאמר, בדקתי, ואכן, אתה צודק, ניתן להישתמש ב-2 הדרכים הללו.


    ובנימה קצת פחות אישית, מאמר מצוין, כל הכבוד!

    תודה רבה, השכלתי.

  4. טל | 2/20/2009 2:54:40 PM

    אני אישית גם משתמש בסימן הכפול(&& ו-||) מכיוון שהוא יותר מהיר ובשיעור על פקודת ה-IF (שיעור ההמשך של ה-IF) הסברתי למה.

  5. כפיר | 5/8/2009 7:13:20 PM

    קודם כל, כל הכבוד ! אני כבר בשיעור השלישי פה ואני לומד ה-מ-ו-ן !!!

    אבל למרות שאני לא מבין כל כך, לדעתי ביצעת שגיאות בטבלה הזו.

    שים לב לסימן ואז לשאלה.. ביצעת דברים פעמיים כמו בסימן "שיוויון" ובסימן "קטן שווה מ-"

    זה אמור להיות ככה לדעתי. ואם אני טועה, אנא תקן אותי :)

    ==שיוויוןif (x==40)האם x שווה ל-40 ?
    !=חוסר-שיוויוןif (x!=40)האם x שונה מ-40 ?
    >גדול מ-if (x>40)האם x גדול מ-40 ?
    >=גדול שווה מ-if (x>=40)האם x גדול או שווה ל-40 ?
    <קטן מ- if (x<40)האם x קטן מ-40 ?
    <=קטן שווה מ-if (x<=40)האם x קטן או שווה ל-40 ?

     

  6. טל | 5/10/2009 9:01:17 AM

    @כפיר, תודה על התיקון... הכנסתי את זה לפוסט!

  7. שירן | 11/6/2009 10:15:21 AM
    אם מופיע פעמיים && מה ההבדל ? אפשר הסבר ?
  8. טל | 11/9/2009 10:51:12 AM
    ההסבר לכך מופיע בשיעור "פקודת If ב-Java - המשך".
  9. יותם | 2/20/2010 1:43:30 AM

    טל, תשמע אני לא הבנתי את החלק עם הboolean והאופרטור הלוגיי. מזה עוזר לי? ניסיתי לכתוב את אחד הדברים שמה וזה לא עשה כלום... יש מצב להסבר? בהתחלה לא הבנתי אז דילגתי על זה והמשכתי אני בערך בן 12 ודיי קשה לי לזכור את כל זה... הגעתי אפילו להתחלה של if אבל אז עצרתי וחזרתי על החומר כשמתי לב שאני לא מצליח הגעתי לחלק שצריך לבנות חידון חשבון פשוט. יש לך אולי טיפ איך אני אזכור את זה טוב? ואני עדיין צריך עזרה ב boolean

    תודה 

  10. טל | 2/23/2010 3:29:28 PM

    @יותם, על משתנה boolean הוסבר באחד מהמדריכים הקודמים. זהו משתנה שיכול להכיל את אחד משני הערכים הבאים "אמת" או "שקר".

    אופרטור לוגי פועל על משתנים מסוג boolean. למשל האופרטור NOT (שסימנו הוא סימן קריאה !) הופך את הערך "שקר" לערך "אמת" וגם הופך את הערך "אמת" לערך שקר.

    כלומר:

    !אמת == שקר

    !שקר == אמת

    בשיעור על פקודות if הדברים יתחברו טוב יותר.

  11. יעל | 2/23/2011 2:45:56 PM

    רציתי לדעת מה אומר הסימן ! אם הוא נמצא לפני קבוע. שאלה לדוגמא:

    מה יתקבל מהביטוי הבא (0 או 1):

    4==2!

  12. יואב | 10/5/2012 11:03:33 AM
    איך כותבים חזקה ב-java?
  13. אלכס | 11/6/2013 4:18:40 AM

      אם אני צריך במשתנה מסוג duble רק את החלק העשרוני שבו:נגיד חילקתי 25/10=2.5 ואני צריך את ה5 אחרי הנקודה על מנת לסכום אותו ,איך אני עושה זאת?

     

  14. לא עניינכם | 11/15/2014 4:56:11 AM
    לא הבנתי .....
  15. hh | 12/25/2016 6:28:50 AM
    שלום חבר

התגובות נעולות