أحد الاستخدامات الأساسية لأجهزة الكمبيوتر هو إجراء العمليات الحسابية، باعتبارها لغة كمبيوتر، توفر Java أيضًا مجموعة غنية من العوامل للتعامل مع المتغيرات. يمكننا تقسيم المشغلين إلى المجموعات التالية:
تُستخدم العوامل الحسابية في التعبيرات الرياضية وتعمل بنفس الطريقة التي تعمل بها في الرياضيات. يسرد الجدول التالي كافة العوامل الحسابية.
يفترض المثال الموجود في الجدول أن المتغير الصحيح A له قيمة 10 والمتغير B له قيمة 20:
المشغل | يصف | مثال |
---|---|---|
+ | الإضافة - القيم الموجودة على جانبي عامل الإضافة | أ + ب يساوي 30 |
- | الطرح - المعامل الأيسر ناقص المعامل الأيمن | أ - ب يساوي -10 |
* | الضرب - ضرب القيم على جانبي عامل التشغيل | أ * ب يساوي 200 |
/ | القسمة - يقسم المعامل الأيسر على المعامل الأيمن | ب/أ يساوي 2 |
% | Modulo - باقي المعامل الأيسر مقسومًا على المعامل الأيمن | ب%أ يساوي 0 |
++ | الزيادة - زيادة قيمة المعامل بمقدار 1 | B++ أو ++B يساوي 21 |
-- | إنقاص - يقلل من قيمة المعامل بمقدار 1 | ب-- أو -ب يساوي 19 |
على الرغم من أن كلاهما ذاتي الزيادة (نتائج عمليتهما تساوي B+1)، لا تزال هناك اختلافات بين B++ و++B هي قيمة l ويمكن تشغيلها مباشرة في مكانها (يمكن فهمها على أنها + مباشرة المتغير B) 1)، B++ هو قيمة r عند التشغيل في المترجم، سيتم إنشاء متغير مؤقت أولاً، ثم سيتم استخدام المتغير المؤقت لحساب +1 ثم تعيينه إلى B.
لذلك، في رمز المثال أدناه، عند طباعة d++، وجد أن النتيجة ليست +1 (في هذا الوقت، تتم طباعة المتغير d، ويتم تشغيل المتغير المؤقت d)، ولكن يتم عرض النتيجة في التالي العبارة المطبوعة هي +1 مرة أخرى النتيجة النهائية (يتم تعيين قيمة المتغير المؤقت للمتغير d). نتيجة طباعة ++d هي +1 مباشرة.
يوضح برنامج المثال البسيط التالي العوامل الحسابية. انسخ برنامج Java التالي والصقه واحفظه كملف Test.java، ثم قم بتجميع البرنامج وتشغيله:
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b) ); System.out.println("a - b = " + (a - b) ); System.out.println("a * b = " + (a * b) ); System.out.println("b / a = " + (b / a) ); System.out.println("b % a = " + (b % a) ); System.out.println("c % a = " + (c % a) ); System.out.println("a++ = " + (a++) ); System.out.println("a-- = " + (a--) ); // 查看d++ 与++d 的不同System.out.println("d++ = " + (d++) ); System.out.println("d = " + d); System.out.println("++d = " + (++d) ); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5 a++ = 10 a-- = 11 d++ = 25 d =26 ++d = 27
يعرض الجدول التالي عوامل التشغيل العلائقية التي تدعمها Java
يحتوي مثال المتغير الصحيح A في الجدول على قيمة 10 والمتغير B له قيمة 20:
مشغل | يصف | مثال |
---|---|---|
== | يتحقق مما إذا كانت قيم المعاملين متساوية، إذا كان الأمر كذلك فإن الشرط صحيح. | (أ == ب) خطأ (غير صحيح). |
!= | يتحقق مما إذا كانت قيم المعاملين متساوية، إذا كانت القيم غير متساوية فإن الشرط صحيح. | (أ! = ب) صحيح. |
> | يتم التحقق مما إذا كانت قيمة المعامل الأيسر أكبر من قيمة المعامل الأيمن، وإذا كان الأمر كذلك، يصبح الشرط صحيحًا. | (أ>ب) غير صحيح. |
< | يتم التحقق مما إذا كانت قيمة المعامل الأيسر أقل من قيمة المعامل الأيمن، وإذا كان الأمر كذلك، يصبح الشرط صحيحًا. | (أ<ب) صحيح. |
>= | يتم التحقق مما إذا كانت قيمة المعامل الأيسر أكبر من أو تساوي قيمة المعامل الأيمن، وإذا كان الأمر كذلك، يصبح الشرط صحيحًا. | (أ>=ب) خطأ. |
<= | للتحقق مما إذا كانت قيمة المعامل الأيسر أقل من أو تساوي قيمة المعامل الأيمن، إذا كان الأمر كذلك، يصبح الشرط صحيحًا. | (أ <= ب) صحيح. |
يوضح برنامج المثال البسيط التالي العوامل العلائقية. انسخ برنامج Java التالي والصقه واحفظه كملف Test.java، ثم قم بتجميع البرنامج وتشغيله:
public class Test { public static void main(String args[]) { int a = 10; int b = 20; System.out.println("a == b = " + (a == b) ); System.out.println("a != b = " + (a != b) ); System.out.println("a > b = " + (a > b) ); System.out.println("a < b = " + (a < b) ); System.out.println("b >= a = " + (b >= a) ); System.out.println("b <= a = " + (b <= a) ); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
تحدد Java عوامل تشغيل البت، والتي تنطبق على أنواع الأعداد الصحيحة (int)، والأعداد الصحيحة الطويلة (طويلة)، والأعداد الصحيحة القصيرة (قصيرة)، وأنواع الأحرف (char)، وأنواع البايت (بايت).
تعمل عوامل تشغيل Bitwise على جميع البتات وتعمل بشكل bitwise. لنفترض أن a = 60، وb = 13؛ سيكون تمثيلهما الثنائي كما يلي:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
يسرد الجدول التالي العمليات الأساسية لمشغلي البت، على افتراض أن المتغير الصحيح A له قيمة 60 والمتغير B له قيمة 13:
المشغل | يصف | مثال |
---|---|---|
& | عامل التشغيل AND، تكون النتيجة 1 إذا وفقط إذا كان جزء معين من كلا المعاملين غير 0. | (أ&ب)، احصل على 12، وهو 00001100 |
| | عامل تشغيل Bitwise OR، طالما أن جزءًا معينًا من المعاملين ليس 0، فستكون النتيجة 1. | (أ | ب) يحصل على 61، وهو 00111101 |
^ | عامل Bitwise XOR، عندما يكون جزء معين من المعاملين مختلفًا، فإن البت الناتج هو 1. | (A^B) يعطينا 49، وهو 0011 0001 |
~ | يقوم عامل التشغيل المكمل للبت بقلب كل جزء من المعامل. | (~A) يحصل على -61، وهو 1100 0011 |
<< | عامل التحول الأيسر Bitwise. يتم إزاحة المعامل الأيسر إلى اليسار بعدد البتات المحددة بواسطة المعامل الأيمن. | A << 2 يعطينا 240، وهو 11110000 |
>> | مشغل التحول الأيمن باتجاه البت. يتم إزاحة المعامل الأيسر باتجاه البت إلى اليمين بعدد البتات المحددة بواسطة المعامل الأيمن. | أ >> 2 يحصل على 15 وهو 1111 |
>>> | مشغل نقل الحركة لليمين بمقدار صفر. يتم إزاحة قيمة المعامل الأيسر إلى اليمين بعدد البتات المحددة بواسطة المعامل الأيمن، ويتم ملء الوظائف الشاغرة الناتجة بالأصفار. | أ >>> 2 يحصل على 15 وهو 0000 1111 |
يوضح برنامج المثال البسيط التالي عوامل تشغيل bitwise. انسخ برنامج Java التالي والصقه واحفظه كملف Test.java، ثم قم بتجميع البرنامج وتشغيله:
public class Test { public static void main(String args[]) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ System.out.println("a << 2 = " + c ); c = a >> 2; /* 215 = 1111 */ System.out.println("a >> 2 = " + c ); c = a >>> 2; /* 215 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 2 = 15 a >>> 2 = 15
يسرد الجدول التالي العمليات الأساسية للعوامل المنطقية، على افتراض أن المتغير المنطقي A صحيح والمتغير B خطأ
المشغل | يصف | مثال |
---|---|---|
&& | يسمى العامل المنطقي AND. يكون الشرط صحيحًا إذا وفقط إذا كان كلا المعاملين صحيحين. | (أ و ب) خطأ. |
| | يُطلق عليه عامل التشغيل المنطقي OR. يكون الشرط صحيحًا إذا كان أحد المعاملين صحيحًا. | (أ | | ب) صحيح. |
! | يسمى العامل المنطقي NOT. يستخدم لعكس الحالة المنطقية للمعامل. إذا كان الشرط صحيحًا، فسيصبح العامل المنطقي NOT خطأً. | ! (أ و ب) صحيح. |
يوضح المثال البسيط للبرنامج التالي العوامل المنطقية. انسخ برنامج Java التالي والصقه واحفظه كملف Test.java، ثم قم بتجميع البرنامج وتشغيله:
public class Test { public static void main(String args[]) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) = " + !(a && b)); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
a && b = false a || b = true !(a && b) = true
فيما يلي عوامل التعيين التي تدعمها لغة Java:
المشغل | يصف | مثال |
---|---|---|
= | عامل التعيين البسيط، يعين قيمة المعامل الأيمن إلى المعامل الأيسر | C = A + B سوف يعين القيمة التي تم الحصول عليها بواسطة A + B إلى C |
+ = | عامل تعيين الإضافة، الذي يضيف المعامل الأيسر والمعامل الأيمن ويعين القيمة إلى المعامل الأيسر | C + = A يعادل C = C + A |
-= | عامل الطرح والتخصيص، الذي يطرح المعامل الأيسر والمعامل الأيمن ويعين القيمة إلى المعامل الأيسر | C - = A يعادل C = C - A |
* = | عامل الضرب والتخصيص، الذي يقوم بضرب المعامل الأيسر والمعامل الأيمن ويعين القيمة للمعامل الأيسر | C * = A يعادل C = C * A |
/ = | يقوم عامل القسمة والتخصيص بتقسيم المعامل الأيسر والمعامل الأيمن وتعيين القيمة إلى المعامل الأيسر. | C / = A يعادل C = C / A |
(%)= | Modulo ومشغل التعيين، الذي يعدل المعاملين الأيسر والأيمن ويعين القيمة إلى المعامل الأيسر | C%=A يعادل C=C%A |
<< = | مشغل مهمة التحول الأيسر | C << = 2 يعادل C = C << 2 |
>> = | عامل تعيين التحول الأيمن | C >> = 2 يعادل C = C >> 2 |
&= | عامل تشغيل Bitwise AND | C&=2 يعادل C=C&2 |
^ = | عامل تعيين Bitwise XOR | C^=2 يعادل C=C^2 |
| | عامل تشغيل Bitwise أو التخصيص | C|=2 يعادل C=C|2 |
يوضح برنامج المثال البسيط التالي عامل التعيين. انسخ برنامج Java التالي والصقه واحفظه كملف Test.java، ثم قم بتجميع البرنامج وتشغيله:
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c ); c += a ; System.out.println("c += a = " + c ); c -= a ; System.out.println("c -= a = " + c ); c *= a ; System.out.println("c *= a = " + c ); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c ); a = 10; c = 15; c %= a ; System.out.println("c %= a = " + c ); c <<= 2 ; System.out.println("c <<= 2 = " + c ); c >>= 2 ; System.out.println("c >>= 2 = " + c ); c >>= 2 ; System.out.println("c >>= a = " + c ); c &= a ; System.out.println("c &= a= " + c ); c ^= a ; System.out.println("c ^= a= " + c ); c |= a ; System.out.println("c |= a= " + c ); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
c = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c <<= 2 = 20 c >>= 2 = 5 c >>= 2 = 1 c &= a = 0 c ^= a = 10 c |= a = 10
تُعرف العوامل الشرطية أيضًا باسم العوامل الثلاثية. يحتوي هذا العامل على ثلاثة معاملات ويحتاج إلى تقييم قيمة التعبير المنطقي. الغرض الرئيسي من هذا العامل هو تحديد القيمة التي يجب تخصيصها للمتغير.
variable x = (expression) ? value if true : value if false
public class Test { public static void main(String args[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
Value of b is : 30 Value of b is : 20
يتم استخدام هذا العامل للعمل على مثيلات الكائن والتحقق مما إذا كان الكائن من نوع معين (نوع الفئة أو نوع الواجهة).
يتم استخدام عامل التشغيل بالتنسيق التالي:
( Object reference variable ) instanceof (class/interface type)
إذا كان الكائن الذي يشير إليه المتغير الموجود على الجانب الأيسر من المشغل هو كائن من الفئة أو الواجهة (الفئة/الواجهة) على الجانب الأيمن من المشغل، فإن النتيجة تكون صحيحة.
هنا مثال:
String name = 'James'; boolean result = name instanceof String; // 由于name是String类型,所以返回真
يستمر هذا العامل في إرجاع القيمة true إذا كانت الكائنات المقارنة متوافقة مع النوع الأيمن.
انظر إلى المثال التالي:
class Vehicle {} public class Car extends Vehicle { public static void main(String args[]){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
true
عندما تظهر عوامل تشغيل متعددة في تعبير، أي عامل يأتي أولاً؟ وهذا ينطوي على مسألة أسبقية المشغل. في التعبير متعدد المشغلين، ستؤدي أولويات المشغل المختلفة إلى نتائج نهائية مختلفة جدًا.
على سبيل المثال (1+3) + (3+2)*2، إذا تم حساب هذا التعبير حسب علامة الزائد كأولوية قصوى، فالإجابة هي 18، وإذا كانت علامة الضرب هي الأولوية القصوى، فإن الإجابة هي 14.
مثال آخر، x = 7 + 3 * 2؛ هنا x تحصل على 13، وليس 20، لأن عامل الضرب له أولوية أعلى من عامل الجمع، لذلك يتم حساب 3 * 2 أولاً للحصول على 6، ثم تتم إضافة 7.
العوامل ذات الأسبقية الأعلى في الجدول التالي موجودة في أعلى الجدول، والعوامل ذات الأسبقية الأقل موجودة في أسفل الجدول.
فئة | المشغل | الملاءمة |
---|---|---|
لاحقة | () [] . | من اليسار إلى اليمين |
يوان واحد | + + -! ~ | من اليمين إلى اليسار |
مضاعف | */% | من اليسار إلى اليمين |
المضافة | + - | من اليسار إلى اليمين |
يحول | >> >>> << | من اليسار إلى اليمين |
علاقة | >> = << = | من اليسار إلى اليمين |
متساوي | ==!= | من اليسار إلى اليمين |
Bitwise AND | & | من اليسار إلى اليمين |
XOR بالبت | ^ | من اليسار إلى اليمين |
Bitwise أو | | | من اليسار إلى اليمين |
منطقي و | && | من اليسار إلى اليمين |
منطقي أو | | | من اليسار إلى اليمين |
حالة | ؟ : | من اليمين إلى اليسار |
تكليف | = + = - = * = / =%= >> = << =&= ^ = = | من اليمين إلى اليسار |
فاصلة | , | من اليسار إلى اليمين |