الأربعاء، 17 أكتوبر 2012

مشغلي جافا Java Operators

مشغلي جافا Java Operators


يتم استخدام مشغلي جافا Java Operators لمعالجة أنواع البيانات البدائية. ويمكن تصنيف مشغلي جافا كأحادي "unary" أو ثنائي "binary" أو ثلاثي "ternary" ، بمعني أنها تتخذ واحد أو اثنين أو الثلاث حجج "arguments" على التوالي. ويجوز للمشغل الأحادي "unary operator" المثول أمام حجته "argument" (اختصار  "prefix" ) أو بعد حجته  ("postfix"). المشغل الثنائي أو الثلاثي يظهر بين حججه"arguments". 
مشغلي جافا Java Operators ينقسموا إلى 8 فئات مختلفة :
ينقسم مشغلي جافا Java Operators إلى ثماني فئات مختلفة  : الاحالة "assignment" ، و الحسابي "arithmetic" ، العلائقية "relational" ، المنطقية "logical" ، و المختصة بالبت "bitwise" ، مركب الاحالة "compound assignment" ، الشرطي "conditional" ، والنوع "type".


Assignment Operators         = 
Arithmetic Operators          -        +        *        /        %        ++        --
Relational Operators          >        <        >=        <=        ==        !=
Logical Operators               &&        ||        &        |        !        ^
Bit wise Operator               &        |        ^                >>        >>>
Compound Assignment Operators         +=        -=        *=        /=        %=        <<=        >>=     >>>= 
Conditional Operator         ?:

مشغلي الاحالة Assignment operators 


بيان مشغلي الاحالة Assignment operators لجافا لديه هذا التركيب "syntax":

variable = expression

إذا كانت القيمة موجودة بالفعل في المتغير فسيتم تجاوزها بواسطة عامل الاحالة (=).


المشغلين الحسابيين Arithmetic operators 


جافا يوفرثمانية عوامل الحسابية. و هم الجمع ، الطرح ، الضرب ، القسمة، مودولو "modulo" (أو ما تبقى) ، التزايد "increment" (أو إضافة 1) ، وإنقاص decrement  (أو طرح 1) ، والنفي "negation". ويظهر البرنامج أدناه أمثلة  توضح مختلف العوامل الحسابية في جافا.
عند استعمال المشغل + فيتم تحديد نوع العملية التي يقوم بها من نفس نوع المعاملات. فعندما يكون واحد من المعاملات كائن سلسلة "String object" ، فيتم تحويل المعامل الأخرى ضمنيا لتمثيل سلسلة "String" ويتم تنفيذ تسلسل السلسلة.







المشغلين العلائقيين Relational operators 


يتم استخدام المشغلين العلائقيين "Relational operators" في جافا لمقارنة 2 أو أكثر من الكائنات. جافا يوفر ستة مشغلين العلائقيين:
أكبر من (>)، و أقل من (<)، و أكبر من أو يساوي  (>=)، و أقل من أو يساوي  (<=)، و متساوية  (==) ، وغير متساوية (!=).
جميع المشغلين العلائقيين "Relational operators" هم ثنائيين "binary" ، والمعاملات الخاصة بهم هي تعبيرات رقمية "numeric expressions".
يتم تطبيق التعزيز الرقمي الثنائي "Binary numeric promotion" على معاملات لهذه العوامل "operators". نتائج  التقييم تكون في قيمة منطقية "boolean value". المشغلين العلائقيين "Relational operators" لديهم أسبقية أقل من المشغلين الحسابيين "arithmetic operators" ، ولكن أعلى من مشغلي الاحالة "assignment operators" . ويُظهر البرنامج أدناه  مثال يوضح مختلف المشغلين العلائقيين "Relational operators" في جافا.


المشغلين المنطقيين Logical operators


المشغلين المنطقيين Logical operators يقومون بإرجاع قيمة صحيحة أو خاطئة "true or false" استنادا إلى حالة المتغيرات "Variables". هناك ستة مشغلين منطقية أو قيمة منطقية "logical or boolean". و هم  AND و AND الشرطي و OR و OR الشرطي و OR الحصري و NOT. يجب على كل حجة "argument" منطقية لمشغل منطقي ان يكون نوع بياناتها منطقي boolean ، ويكون نوع بيانات النتيجة دائما  منطقي boolean. ويظهر البرنامج أدناه  مثال يوضح مختلف المشغلين المنطقيين Logical operators في جافا.


بالنظر إلى أن x و y تمثل تعبيرات قيمة منطقية "boolean expressions" ، يتم تعريف العوامل المشغلين المنطقيين في الجدول أدناه.

x y !x x & y
x && y
x | y
x || y
x ^ y
true true false true true false
true false false false true true
false true true false true true
false false true false false false

مشغلين المختصين بالبت Bitwise operators


جافا يوفر مشغلين المختصين بالبت Bitwise operators للتعامل مع محتويات المتغيرات على مستوى بت bit.
يجب أن تكون هذه المتغيرات من نوع البيانات الرقمية (char, short, int, أو long). جافا يوفر سبعة مشغلين المختصين بالبت Bitwise operators. و هم AND و OR ، و Exclusive-OR و Complement و Left-shift و Signed Right-shift و Unsigned Right-shift.  ويظهر البرنامج أدناه  مثال يوضح مختلف  مشغلين المختصين بالبت Bitwise operators في جافا.


ويظهر نتيجة لتطبيق للمشغلين المختصين بالبت Bitwise operators بين اثنين من بت "bits" المقابلة في المعاملات في الجدول أدناه.

A B ~A A & B A | B A ^ B
1 1 0 1 1 0
1 0 0 0 1 1
0 1 1 0 1 1
0 0 1 0 0 0

Output 
3,0,3




مشغلين المركب Compound operators


Syntax:
مشغلين المركب Compound operators تُحدث اختصارات في عمليات البرمجة المشتركة. جافا لديها أحد عشر من مشغلين مركب الاحالة "compound assignment".
التركيب Syntax:
argument1 operator = argument2
مثال:
x += 3; 
y *= x;
العبارة أعلاه هي نفسها: argument1 = argument1 operator argument2 .  ويظهر البرنامج أدناه  مثال يوضح مختلف مشغلين مركب Compound operators.



المشغلين الشرطيين Conditional operators


المشغل الشرطي "Conditional operator" هو المشغل  ثلاثي الوحيد (مشغل يأخذ ثلاث حجج "arguments" ) في جافا. المشغل يقوم بتقيم الحجة الأولى فإذا كانة صحيح "true" فيقوم بتقيم الحجة الثانية. إذا كانت الحجة الأولى قُيّمت بـ false  سيتم تقييم الحجة الثالثة. المشغل الشرطي "Conditional operator" هو  تعبير الذي يعادل البيان if-else . يمكن للتعبير الشرطي ان يتداخل و المشغل الشرطي "Conditional operator" التابع لها من اليمين إلى اليسار : (a?b?c?d:e:f:g) يقيم كـ (a?(b?(c?d:e):f):g)

ويظهر البرنامج أدناه  مثال يوضح المشغل ثلاثي في جافا.





Output 
FFT

تحويل النوع يسمح بتغيير قيمة البيانات البدائية من نوع  إلى آخر. عملية التحويل تحدث بشكل صريح ، كما هو محدد في البرنامج ، أو ضمنا، عن طريق جافا نفسها. جافا تسمح بتحويلات اتساع النوع "type widening" وتضييق النوع "type narrowing".
تحويلات جافا يمكن أن تحدث بواسطة الطرق التالية :
  • باستخدام مشغل cast operator (تعزيز واضح)
  • باستخدام المشغلين الحسابيين Arithmetic operators يستخدم مع الحجج من أنواع بيانات مختلفة (تعزيز الحساب)
  • يتم تعيين قيمة من نوع معين إلى متغير من نوع مختلف (تعزيز الاحالة)

مشغل الاسبقية Operator Precedence


النظام الذي يتم به ترتيب المشغلين معروف بأنه تنضيم حسب الأسبقية "precedence". المشغلين الذين لهم الأسبقية مرتفعة يتم تطبيقهم  قبل المشغلين الذين لديهم الأسبقية منخفضة. ويظهر ترتيب أسبقية المشغل لجافا أدناه. المشغلين في الجزء العلوي من الجدول يتم تطبيقهم  قبل المشغلين في الجزء لأسفل من الجدول. إذا كان لديك اثنان من المشغلين لديهم نفس الأسبقية، فيتم تطبيقها حسب ترتيب ظهورهم في البيان. الذي هو من اليسار إلى اليمين. يمكنك استخدام الأقواس لتجاوز الأسبقية الافتراضية.

postfix [] . () expr++ expr–
unary ++expr –expr +expr -expr ! ~
creation/caste new (type)expr
multiplicative * / %
additive + -
shift >> >>>
relational < <= > >= instanceof
equality == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
ternary ?:
assignment = “op=”

مثال
في عملية مثل
result = 4 + 5 * 3

يتم تقييم (5 * 3) أولا ويتم إضافة النتيجة إلى 4 الذي سيعطينا قيمة النتيجة النهائية 19. علما بأن '*' يأخذ أسبقية أعلى من "+" وفقا للمخطط الموضح أعلاه. هذا النوع من أسبقية مشغل على آخر ينطبق على جميع مشغلين.

ليست هناك تعليقات:

إرسال تعليق