JavaRush /בלוג Java /Random-HE /פעולות מספר ב-Java

פעולות מספר ב-Java

פורסם בקבוצה
שלום! היום נסתכל על נושא חשוב מאוד, כלומר, פעולות מספר ב-Java . מספרים נמצאים בכל מקום בתכנות. אם תחפרו בתכנית הלימודים בבית הספר, תזכרו שכל המידע במחשב מוצג בפורמט מספרי - שילובים של אפסים ואחדים - הנקרא גם קוד בינארי. פעולות מספר ב-Java - 2יש הרבה מאוד פעולות על מספרים בתכנות, אז נסתכל על החשובות שבהן עם דוגמאות :)

פעולות אריתמטיות

נתחיל מהדבר הפשוט ביותר – בפעולות אריתמטיות. אלו הם החיבור הידוע (סימן+), חיסור (-), כפל (*) וחילוק (/).
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       System.out.println(x+y);
       System.out.println(x-y);
       System.out.println(x*y);
       System.out.println(x/y);
   }
}
פלט מסוף:

1032
966
32967
30
כבר השתמשת בכל זה. ניתן להוסיף להם מבצע %- שאר החלוקה.
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 33%2;
       System.out.println(y);
   }
}
פלט מסוף:

1
בדוגמה זו, אנו מחלקים 33 ב-2. כתוצאה מכך, נקבל 16 ונשאר "זנב" נוסף שאינו מתחלק ב-2 - אחד. "זנב" זה יהיה תוצאה של פעולת "שארית החלוקה". Java (כמו גם מתמטיקה) מיישמת אופרטורים להשוואה . אתה בטח מכיר אותם גם מבית הספר:
  • שווים ( ==)
  • יותר ( >)
  • פחות ( <)
  • גדול מ או שווה ל ( >=)
  • פחות מ או שווה ל ( <=)
  • לא שווה ( !=)
כאן כדאי לשים לב לנקודה חשובה אחת בה רבים מתחילים טועים. פעולת "שווה" כתובה כ ==, ולא בסימן אחד =. סימן היחידה =ב-Java הוא אופרטור הקצאה, שבו למשתנה מוקצה מספר, מחרוזת או ערך של משתנה אחר. פעולות מספר ב-Java - 3
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);// expect false to be printed to the console
   }
}
פלט מסוף:

999
אופס! ברור שזו לא התוצאה שציפינו לה. זהו סוג אחר לגמרי של נתונים: ציפינו לראות boolean, אבל קיבלנו מספר. הסיבה לכך היא שבסוגריים יש לנו פעולת הקצאה, לא השוואה. x=y הערך y(999) הוקצה למשתנה xולאחר מכן הדפסנו אותו xלקונסולה. אפשרות נכונה:
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x==y);
   }
}
פלט מסוף:

false
כעת השווינו נכון את 2 המספרים! :) תכונה נוספת של פעולת ההקצאה ( =) היא שניתן לבצע אותה "משורשרת":
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;
       int z = 256;

       x = y = z;
       System.out.println(x);
   }
}
פלט מסוף:

256
זכור: ההקצאה מתבצעת מימין לשמאל. ביטוי זה ( x = y = z) יבוצע בשלבים:
  • y = z, כלומר, y = 256
  • x = y, כלומר x = 256

פעולות לא חוקיות

הם נקראים "אנריים" מהמילה "אונו" - "אחד". הם קיבלו את השם הזה מכיוון שבניגוד לקודמים, הם מבוצעים על מספר אחד, ולא על כמה. אלו כוללים:
  • מינוס לא נורמלי. זה הופך את הסימן של המספר.

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
    
           // change the sign for the first time
           x = -x;
           System.out.println(x);
    
           // change the sign a second time
           x= -x;
           System.out.println(x);
       }
    }

    פלט מסוף:

    
    -999
    999

    השתמשנו במינוס האנרי פעמיים. כתוצאה מכך, המספר שלנו הפך שלילי בהתחלה, ואז שוב חיובי!

  • הגדל ( ++) והקטין ( --)

    פעולה ++מגדילה מספר באחד, ופעולה --מקטינה אותו באותה יחידה.

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
           x++;
           System.out.println(x);
    
           x--;
           System.out.println(x);
       }
    }

    פלט מסוף:

    
    1000
    999
צורת סימון זו עשויה להיות מוכרת לך אם שמעתם על שפת C++. בעזרת שם מעניין כל כך, יוצריו העבירו את הרעיון שלהם: "C++ היא הרחבה של שפת C." גרסה משופרת פופולרית של Notepad נקראת Notepad++ נקודה חשובה. ישנם שני סוגים של פעולות הגדלה והקטנה: postfix וקידומת. x++- סימון postfix ++x- סימון קידומת מה ההבדל המהותי אם אתה שם פלוסים ומינוסים לפני או אחרי המספר? בואו נראה בדוגמה:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}
פלט מסוף:

999
משהו לא בסדר! רצינו להגדיל xב-1 ולהקצות ערך חדש למשתנה y. כלומר, y צריך להיות שווה ל-1000. אבל יש לנו תוצאה שונה - 999. מסתבר שהיא xלא הוגדלה, ופעולת ההגדלה לא עבדה? איך זה עבד. כדי לאמת זאת, נסה להדפיס x למסוף בסוף :)
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
       System.out.println(x);
   }
}
פלט מסוף:

999
1000
למעשה, זו הסיבה לפעולת ה-postfix נקראת כך: היא מבוצעת אחרי הביטוי הראשי. כלומר, במקרה שלנו: int y = x++; תחילה הוא מבוצע y = x(והמשתנה y יקבל את ערכו המקורי x), ורק לאחר מכן x++ .מה אם לא נסתפק בהתנהגות זו? עליך להשתמש בסימון הקידומת:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = ++x;
       System.out.println(y);
   }
}
במקרה זה זה יעבוד קודם ++x ורק לאחר מכן. y = x; את ההבדל הזה כדאי לזכור מיד כדי לא לעשות טעויות בתוכנית אמיתית, שבה כל התנהגות יכולה להתהפך בגלל זה :)

פעולות משולבות

בנוסף, בג'אווה יש מה שנקרא פעולות משולבות. הם משתמשים בשילוב של שתי פעולות:
  • מְשִׁימָה
  • פעולה אריתמטית
זה כולל פעולות:
  • +=
  • -=
  • *=
  • /=
  • %=
בואו נסתכל על דוגמה:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       x += y;
       System.out.println(x);
   }
}
פלט מסוף:

1032
x += yאומר x = x + y. רק למען הקיצור, משתמשים בשני תווים ברצף. זה עובד גם עם שילובים של -=, *=, /=ו %=.

פעולות לוגיות

בנוסף לפעולות על מספרים, ל-Java יש גם פעולות על משתנים בוליאניים - trueו false. פעולות אלו מבוצעות באמצעות אופרטורים לוגיים
  • !- מפעיל "לא". הופך את הערך של משתנה בוליאני

    public class Main {
    
       public static void main(String[] args) {
    
           boolean x = true;
           System.out.println(!x);
       }
    }

    פלט מסוף:

    
    false

  • &&- אופרטור "AND". מחזירה ערך trueרק אם שני האופרנדים הם true.

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 && 100 > 200);
           System.out.println(100 > 50 && 100 >= 100);
       }
    }

    פלט מסוף:

    
    false
    true

    התוצאה של הפעולה הראשונה היא false, מכיוון שאחד התנאים הוא שקר, כלומר 100 > 200. האופרטור דורש שכל התנאים יהיו אמיתיים (כמו בשורה השנייה, למשל) &&כדי להחזיר .true

  • ||- אופרטור "OR". מחזירה trueכאשר לפחות אחד מהאופרנדים נכון.

    כאן הדוגמה הקודמת שלנו תעבוד אחרת:

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 || 100 > 200);
       }
    }

    פלט מסוף:

    
    true

    Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.

הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION