שלום! היום נסתכל על נושא חשוב מאוד, כלומר, פעולות מספר ב-Java . מספרים נמצאים בכל מקום בתכנות. אם תחפרו בתכנית הלימודים בבית הספר, תזכרו שכל המידע במחשב מוצג בפורמט מספרי - שילובים של אפסים ואחדים - הנקרא גם קוד בינארי. יש הרבה מאוד פעולות על מספרים בתכנות, אז נסתכל על החשובות שבהן עם דוגמאות :)
פעולות אריתמטיות
נתחיל מהדבר הפשוט ביותר – בפעולות אריתמטיות. אלו הם החיבור הידוע (סימן+), חיסור (-), כפל (*) וחילוק (/).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 הוא אופרטור הקצאה, שבו למשתנה מוקצה מספר, מחרוזת או ערך של משתנה אחר.
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
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) является истинной.
GO TO FULL VERSION