English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

تحكم العمليات في Java

مجموعات Java Array

Java توجيه الأشياء (I)

Java توجيه الأشياء (II)

Java توجيه الأشياء (III)

معالجة الاستثنائات Java

قائمة Java List

Java Queue (الصف)

مجموعات Java Map

مجموعات Java Set

إدخال/إخراج Java (I/O)

قراء/كتابة Java

موضوعات أخرى في Java

عناصر الحساب Java

أحد الاستخدامات الأساسية للكمبيوتر هو تنفيذ العمليات الرياضية، وكمسغة برمجية، يقدم لغة Java مجموعة غنية من الأوامر الرياضية لتشغيل المتغيرات. يمكن تقسيم الأوامر الرياضية إلى مجموعات من التالية:

  • عمليات الحساب

  • عمودية

  • عمليات التداخل

  • عمليات التشغيل المنطقية

  • عمليات التخصيص

  • عمليات أخرى

عمليات الحساب

تستخدم عمليات الحساب في التعبيرات الرياضية، وظائفها مشابهة لتلك في الرياضيات. يعرض الجدول أدناه جميع عمليات الحسابية.

النماذج في الجدول تخطئ على المتغيرات الصحيحة A بـ10، المتغير B بـ20:

                Operators                وصف                مثال
+الإضافة - القيمة المتبادلة بين القيم الموجودة على جانبي علامة الإضافةA + B يساوي 30
-الطرح - الطرح بين المعدل الأيسر والمعدل الأيمنA – B يساوي -10
*الطحن - القيمة المتبادلة بين القيم الموجودة على جانبي علامة الطحنA * B يساوي 200
/الطحن - الطحن بين المعدل الأيسر والمعدل الأيمنB / A يساوي 2
%%البقية - البقية بين المعدل الأيسر والمعدل الأيمنB%A يساوي 0
++زيادة: قيمة المعدل تزيد بـ1B++ أو ++B يساوي 21 (تفاصيل فيما يلي)
--تقليص: قيمة المعدل تقلل بـ1B-- أو --B يساوي 19 (تفاصيل فيما يلي)

مثال

برنامج بسيط يوضح عمليات الحسابية. احفظ البرنامج التالي كملف ArithmeticOperator.java وانتقل إلى التجميع والتنفيذ:

class ArithmeticOperator {
    public static void main(String[] args) {
        
        double number1 = 12.5, number2 = 3.5, result;
        
        //استخدام عمليات الإضافة
        result = number1 + number2;
        System.out.println("number1 + number2 = " + result);
        
        //استخدام عمليات الطرح
        result = number1 - number2;
        System.out.println("number1 - number2 = " + result);
        
        //استخدام عمليات الضرب
        result = number1 * number2;
        System.out.println("number1 * number2 = " + result);
        //استخدام عمليات التكامل
        result = number1 / number2;
        System.out.println("number1 / number2 = " + result);
        
        //استخدام عمليات البقية
        result = number1 %% number2;
        System.out.println("number1 %% number2 = " + result);
    }
}

نتائج التشغيل والترميز للعينة أعلاه كالتالي:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

عمودية التغير أو التقليل

1-تغير (++) وتقليل (--)هي عمودية حسابية خاصة، تحتاج العموديات الحسابية إلى عموديين للقيام بالعمليات، بينما العموديات التغيرية أو التقليلية تحتاج إلى عمودي واحد فقط.

public class selfAddMinus{
    public static void main(String[] args){
        int a = 3; تعريف متغير
        int b = ++a; عملية التغير هي
        int c = 3;
        int d = --c; عملية التغير هي
        System.out.println("القيمة بعد التغير هي " + b);
        System.out.println("القيمة بعد التغير هي " + d);
    }
}

نتيجة التنفيذ هي:

القيمة بعد التغير هي 4
القيمة بعد التغير هي 2

التوضيح:

  • int b = ++a; يُقسم عملية التغير إلى: a = a + 1 = 4; b = a = 4، والنتيجة النهائية هي b = 4، a = 4

  • int d = --c; يُقسم عملية التغير إلى: c = c - 1 = 2; d = c = 2، والنتيجة النهائية هي d = 2، c = 2

2-استخدام التغير أو التقليل المسبق (++a, --a): أولاً، يتم تنفيذ عملية التغير أو التقليل، ثم يتم تنفيذ عملية التعبير.

3-استخدام التغير أو التقليل الظاهري (a++, a--): أولاً، يتم تنفيذ عملية التعبير، ثم يتم تنفيذ التغير أو التقليل. مثال:

public class selfAddMinus{
    public static void main(String[] args){
        int a = 5; // تعريف متغير;
        int b = 5;
        int x = 2 * ++a;
        int y = 2 * b++;
        System.out.println("قبل التغير، a = " + a + ", x = " + x);
        System.out.println("بعد التغير، b = " + b + ", y = " + y);
    }
}

نتيجة التنفيذ هي:

قبل التغير، a = 6، x = 12، بعد التغير، b = 6، y = 10

عمودية

الجدول أدناه يوضح العموديات المدعومة من قبل Java

في الجدول التالي، يتم تعيين قيمة المتغيرات الصحيحة A إلى 10، والقيمة B إلى 20:

عمودية    وصف    مثال
    ==تتحقق من القيمة للعموديين إذا كانت متساوية، إذا كانت متساوية، فإن الشرط صحيح.(A == B) خطأ.
    !=تتحقق من القيمة للعموديين إذا كانت متساوية، إذا كانت غير متساوية، فإن الشرط صحيح. (A != B) صحيح.
    > تتحقق من القيمة اليسرى للعمودية إذا كانت أكبر من القيمة اليمنى للعمودية، إذا كانت القيمة اليمنى أكبر، فإن الشرط صحيح.(A > B) هو خطأ.
    <  تتأكد من أن قيمة العنصر الأيسر هي أقل من قيمة العنصر الأيمن، إذا كانت كذلك فإن الشروط تكون صحيحة.(A < B) هو صحيح.
    >=تتأكد من أن قيمة العنصر الأيسر هي أكبر أو تساوي قيمة العنصر الأيمن، إذا كانت كذلك فإن الشروط تكون صحيحة.(A >= B) هو خطأ.
    <=تتأكد من أن قيمة العنصر الأيسر هي أقل أو تساوي قيمة العنصر الأيمن، إذا كانت كذلك فإن الشروط تكون صحيحة.(A <= B) هو صحيح.

مثال

البرنامج البسيط التالي يوضح عمليات العلاقات. احفظ البرنامج التالي كملف Test.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)، (long)، (short)، (char)، و(byte) وغيرها.

تعمل عمليات التداخل على جميع المواضع، وتعمل حسب التداخل. افترض أن 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:

Operatorsوصفمثال
إذا كانت الأرقام المتبادلة كلها 1، فإن النتيجة تكون 1، وإلا تكون 0(A&B)، نحصل على 12، أي 0000 1100
|إذا كانت الأرقام المتبادلة كلها 0، فإن النتيجة تكون 0، وإلا تكون 1(A | B) يحصل على 61، أي 0011 1101
^إذا كانت القيم المتبادلة في المواقع المماثلة متطابقة، فإن النتيجة تكون 0، وإلا تكون 1(A ^ B) يحصل على 49، أي 0011 0001
~ميزة التمييز الثنائي تقوم بقلب كل ثنائي في المفسر، أي 0 إلى 1 و1 إلى 0(-A) يحصل على -61، أي 1100 0011
<< ميزة تحريك الثنايا إلى اليسارA << 2 يحصل على 240، أي 1111 0000
>> ميزة تحريك الثنايا إلى اليمينA >> 2 يحصل على 15 أي 1111
>>> ميزة إعادة ملء الثنايا بالصفر للتحرك إلى اليمينA>>>2 يحصل على 15 أي 0000 1111

مثال

البرنامج البسيط التالي يوضح عمليات الحساب البسيطة. استنسخ واشبك البرنامج التالي واحفظه كملف 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;     /* 15 = 1111 */
     System.out.println("a >> 2  = " + c );
  
     c = a >>> 2;     /* 15 = 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 تكون positive، وأن B تكون negative

Operatorsوصفمثال
&&يُسمى عملاً منطقياً And. تكون الحالة positive فقط إذا كانت كلا العمليتين positive.(A && B) هو خطأ.
| |يُسمى عملاً منطقياً أو. إذا كانت أي عملية واحدة positive، فإن الحالة تكون positive.(A || | B) هو صحيح.
!يُسمى عملاً منطقياً للاعكس. يستخدم لتحويل حالة العمليات. إذا كانت الحالة positive، فإن عملاً منطقياً للاعكس سيكون negative.!(A && B) هو صحيح.

مثال

يظهر البرنامج البسيط أدناه عمليات التشغيل المنطقية. قم بنسخ هذا البرنامج 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

عمليات التشغيل المختصرة للمنطقية

عند استخدام عمليات التشغيل المنطقية، تكون النتيجة positive فقط عندما تكون كلا العمليتين positive، ولكن عندما يكون أول عمليتين negative، تكون النتيجة negative، وفي هذه الحالة لن يتم التحقق من العمليتين.

public class LuoJi{
    public static void main(String[] args){
        int a = 5; // تعريف متغير;
        boolean b = (a<4)&&(a++<10);
        System.out.println("نتيجة التشغيل المختصر للمنطقية هي"+b);
        System.out.println("نتيجة a هي"+a);
    }
}

نتيجة التنفيذ هي:

نتيجة التشغيل المختصر للمنطقية هي false
نتيجة a هي 5

التوضيح:يستخدم هذا البرنامج عمليات التشغيل المختصرة للمنطقية (&&)، حيث يتم التحقق من أن نتائج a<4 هي false، فإن نتائج b ستكون بالضرورة false، لذا لن يتم تنفيذ التحقق الثاني a++<10، لذا يكون قيمة a 5.

عمليات التخصيص

فيما يلي عمليات التخصيص المدعومة بلغة Java:

Operatorsوصفمثال
=أوبريت تخصيص بسيط، يخصيص قيمة المعادلة اليمنى في المعادلة اليسرىC = A + B سيزيد قيمة A + B ويخصيصها في C
+ =أوبريت تخصيص جمع، يخصيص القيمة الناتجة عن جمع المعادلة اليسرى والمعادلة اليمنىC += A يساوي C = C + A
- =أوبريت تخصيص طرح، يخصيص القيمة الناتجة عن طرح المعادلة اليسرى والمعادلة اليمنىC -= A يساوي C = C - A
* =أوبريت تخصيص ضرب، يخصيص القيمة الناتجة عن ضرب المعادلة اليسرى والمعادلة اليمنىC *= A يساوي C = C * A
/ =أوبريت تخصيص قسمة، يخصيص القيمة الناتجة عن قسمة المعادلة اليسرى والمعادلة اليمنىC /= A، إذا كانت نوع C متشابهًا مع A يساوي C = C / A
(%) =أوبريت تخصيص أخذ النسبة المئوية، يخصيص القيمة الناتجة عن أخذ النسبة المئوية للمعادلة اليسرى والمعادلة اليمنىC %= A يساوي C = C % A
<< =أوبريت تخصيص تحريك الأنوار إلى اليسارC <<= 2 يساوي C = C << 2
>> =أوبريت تخصيص تحريك الأنوار إلى اليمينC >>= 2 يساوي C = C >> 2
& =أوبريت تخصيص أوتار متشابكةC &= 2 يساوي C = C & 2
^ =أوبريت تخصيص أوتار غير متشابكةC ^= 2 يساوي C = C ^ 2
| =أوبريت تخصيص أوتارC |= 2 يساوي C = C | 2

مثال

برنامج مثال بسيط يوضح أوبريت التخصيص. احصل على البرنامج التالي وألصقه وأحفظه كملف AssignmentOperator.java، ثم قم بتجميعه وتشغيله:

class AssignmentOperator {
    public static void main(String[] args) {
        
        int number1, number2;
        
        // تخصيص 5 إلى number1
        number1 = 5;
        System.out.println(number1);
                
        // تخصيص قيمة متغير number2 إلى number1
        number2 = number1;
        System.out.println(number2);
    }
}

نتائج التشغيل والترميز للعينة أعلاه كالتالي:

5
5

أوبريت التباين(?:)

أوبريت التباين يُسمى أيضًا بـ أوبريت الثلاثي. له ثلاثة معادلات ويجب عليه التحقق من قيمة التعبير البولياني. يُستخدم هذا الأوبريت بشكل رئيسي لتحديد أي قيمة يجب أن تُنقل إلى المتغير.

متغير x = (عبرة) ? قيمة إذا كان صحيحًا : قيمة إذا كان خطأً

مثال

public class Test {
   public static void main(String[] args){
      int a , b;
      a = 10;
      // إذا كان a يساوي 1 صحيحًا، يتم تعيين b إلى 20، وإلا يتم تعيينها إلى 30
      b = (a == 1) ? 20 : 30;
      System.out.println( "قيمة b هي: " +  b );
 
      // إذا كان a يساوي 10 صحيحًا، يتم تعيين b إلى 20، وإلا يتم تعيينها إلى 30
      b = (a == 10) ? 20 : 30;
      System.out.println( "قيمة b هي: " + b );
   }
}

نتائج التشغيل والترميز للعينة أعلاه كالتالي:

قيمة b هي: 30
قيمة b هي: 20

عميل instanceof

يستخدم هذا العميل لمعالجة عينات الأشياء، لتحقق ما إذا كانت العينة هي نوع معين (نوع فئة أو واجهة).

تنسيق استخدام عميل instanceof كالتالي:

( Object reference variable ) instanceof  (class/interface type)

إذا كان العنصر الموجود على يسار عميل العمليات هو عميل لفئة أو واجهة (class/interface) الموجودة على يمين العميل، فإن النتيجة ستكون صحيحة.

إليك مثالًا:

String name = "James";
boolean result = name instanceof String; // بسبب أن name نوعه String، فإنه يعود صحيحًا

إذا كان العنصر المقارن متوافقًا مع النوع من اليمين، فإن هذا العنصر يعود صحيحًا.

انظر إلى المثال التالي:

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

ترتيب العمليات في Java

عندما يظهر عدة عمليات في تعبير واحد، من الذي يأتي أولاً ومن الذي يأتي ثانياً؟ هذا يتعلق بمسألة ترتيب العمليات. يمكن أن يؤدي اختلاف ترتيب العمليات في تعبير يحتوي على عمليات متعددة إلى اختلاف كبير في النتيجة النهائية.

For example, (1+3) + (3+2) * 2, if the addition operator is given the highest priority, the answer is 18, and if the multiplication operator is given the highest priority, the answer is 14.

For example, x = 7 + 3 * 2; here x gets 13, not 20, because the multiplication operator has a higher precedence than the addition operator, so 3 * 2 is calculated first to get 6, then 7 is added.

In the table below, the operators with the highest precedence are at the top of the table, and the lowest precedence are at the bottom.

CategoriesOperatorsAssociativity
Postfix() [] . (Dot Operator)Left to Right
Unaryexpr++  expr--Left to Right
Unary++expr --expr + - ~ !Right to Left
Multiplicative * /%Left to Right
Additive + -Left to Right
Shifting >>> >>>  << Left to Right
Relation >  >=  <  <= Left to Right
Equality ==  !=Left to Right
Bitwise ANDLeft to Right
Bitwise XOR^Left to Right
Bitwise OR|Left to Right
Logical AND&&Left to Right
Logical OR| |Left to Right
Conditional?:Right to Left
Assignment= + = - = * = / =%= >> = << =&= ^ = | =Right to Left
Comma،Left to Right