تطلق OTUS غدًا برنامج إعداد شهادة Oracle Java Programmer (OCAJP) الاحترافي الجديد . ندعوك لمشاهدة تسجيل الدرس التجريبي المجاني "أنواع بيانات Java: المعرفات والأساسيات" ونستمر في نشر سلسلة من المقالات بقلم فلاديسلاف رودين ، رئيس مجموعة التطوير ، والمعلم في MIPT و foxminded.
المقدمة
تقدم شهادة OCA (Oracle Certified Associate Java SE8 Programmer) سلسلة من المهام الملتوية التي تختبر الفهم العميق للغة برمجة Java. الكتلة بأكملها مخصصة للتعبيرات والحلقات والعوامل. سنتحدث عن الأخير اليوم.
أولوية المشغل
يقبل العامل الوسيطات كمدخلات ويرجع بعض القيم. هناك عوامل تشغيل أحادية وثنائية وثالثة. على سبيل المثال ، فالخطأ أحادي ، و أ + ب ثنائي ، و؟ : - هو العامل الوحيد الذي يأخذ ثلاث حجج.
أول شيء يجب تذكره هو أسبقية العوامل:
- عوامل تشغيل ما بعد أحادية: استثناء ++ واستثناء--
- معاملات ما قبل أحادية: ++ استثناء و - استثناء
- باقي العوامل الأحادية: +، - ،!
- الضرب والقسمة وأخذ الباقي: * ، / ،٪
- الجمع والطرح: +، -
- عوامل تحويل البت: << ، >> ، >>>
- عوامل المقارنة: <،> ، <= ،> = ، مثال
- عوامل تشغيل المساواة-عدم المساواة: == ،! =
- العوامل المنطقية: & ، | ، ^
- العوامل المنطقية للدائرة القصيرة: &&، ||
- عامل التشغيل الثلاثي: تعبير منطقي؟ التعبير 1:
expresion2 - عوامل التشغيل: = ، + = ، - = ، * = ، / = ،٪ = ، & = ، ^ = ،! = ، << = ، >> = ، >>> =
العمل مع المشغلين الأحاديين
تحدثنا عن العوامل الثنائية آخر مرة. سنناقش اليوم المشغلين الأحاديين ، والذي يتبع من عنوان المقال. في الامتحان ، قد يقدمون تعبيرات معقدة للغاية لحسابها يجب أن تتذكر ترتيب تنفيذها.
تغيير التوقيع وعوامل الانقلاب المنطقي
عامل معكوس منطقي ! ينطبق فقط على متغيرات من النوع المنطقي ويحول القيمة من صواب إلى خطأ والعكس صحيح. على سبيل المثال:
boolean x = false;
System.out.println(x); // false
x = !x;
System.out.println(x); // true
عامل تغيير التوقيع - ينطبق فقط على الأرقام والعلامات العكسية:
double x = 1.21;
System.out.println(x); // 1.21
x = -x;
System.out.println(x); // -1.21
x = -x;
System.out.println(x); // 1.21
Java ، على عكس نفس C ، تفصل بوضوح بين أنواع البيانات الصحيحة والمنطقية ، وبالتالي فإن استخدام عامل تغيير الإشارة إلى منطقي أو استخدام عامل الانعكاس المنطقي يؤدي إلى أخطاء في التجميع:
int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE
boolean z = !0; // DOES NOT COMPILE
عوامل الزيادة والنقصان
يتم تطبيق عوامل الزيادة ++ والتناقص على متغيرات عدد صحيح ولديهما متغيرين: الزيادة اللاحقة (التناقص) والزيادة المسبقة (التناقص) ، في الكود i ++ (i--) و ++ i (--i) ، على التوالي. الفرق بين المتغيرات هو أن ++ i يزيد المتغير ويعيد القيمة الجديدة ، بينما يُرجع i ++ القيمة القديمة وعندئذ فقط يزيد المتغير. يمكن رؤية الاختلاف بشكل أكثر وضوحًا في هذا الجزء من الكود:
int counter = 0;
System.out.println(counter); // Outputs 0
System.out.println(++counter); // Outputs 1
System.out.println(counter); // Outputs 1
System.out.println(counter--); // Outputs 1
System.out.println(counter); // Outputs 0
في الامتحان ، قد يتم تقديم العديد من المهام الصعبة ، حيث يكون هؤلاء المشغلون عبارة عن عربة وعربة صغيرة. على سبيل المثال ، قد يتم تقديم مثل هذه المهمة.
ما الذي سيتم عرضه نتيجة لهذا البرنامج؟
int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);
System.out.println("y is " + y);
المشكلة هي أن x يتغير عدة مرات على نفس الخط.
لحل مثل هذه المشكلات ، يمكنك تحليل التعبير من اليسار إلى اليمين ، واستبدال التعبير الذي يعيده العاملون في التعبير ، وتحديد قيمة المتغير الجاري تغييره بشكل منفصل. على سبيل المثال ، مثل هذا:
int y = 4 * 5 / x-- + --x; // x assigned value of 4
int y = 4 * 5 / 4 + --x; // x assigned value of 3
int y = 4 * 5 / 4 + 2; // x assigned value of 2
كما ترى ، تنطبق جميع القواعد المذكورة أعلاه لتطبيق المشغلين. ستكون النتيجة ما يلي:
x is 2
y is 7
اقرأ أكثر
