عمليات حسابية
لنبدأ بأبسط شيء، وهو العمليات الحسابية. هذه هي عمليات الجمع المعروفة (علامة +)، والطرح (-)، والضرب (*)، والقسمة (/).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 هي عامل تعيين، حيث يتم تعيين رقم أو سلسلة أو قيمة لمتغير آخر. ![عمليات الأرقام في جافا - 3](https://cdn.javarush.com/images/article/9153dafe-0e58-4fb7-95cd-8a05301abe0d/1024.jpeg)
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
الآن قمنا بمقارنة الرقمين بشكل صحيح! :) ميزة أخرى لعملية التخصيص ( =
) هي أنه يمكن تنفيذها "بالسلاسل":
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
سيتم تنفيذ هذا التعبير ( ) في خطوات:
- ص = ض، أي ص = 256
- س = ص، أي س = 256
العمليات الأحادية
يطلق عليهم "أحادي" من كلمة "uno" - "واحد". لقد تلقوا هذا الاسم لأنه، على عكس السابقين، يتم تنفيذهم على رقم واحد، وليس على عدة. وتشمل هذه:-
الأحادي ناقص. إنه يعكس علامة الرقم.
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;
وهذا الفرق يستحق أن نتذكره على الفور حتى لا نرتكب أخطاء في برنامج حقيقي، حيث يمكن أن تنقلب كل السلوكيات رأساً على عقب بسبب هذا :)
العمليات المجمعة
بالإضافة إلى ذلك، في Java هناك ما يسمى بالعمليات المشتركة. يستخدمون مزيجًا من عمليتين:- تكليف
- عملية حسابية
+=
-=
*=
/=
%=
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
. يتم تنفيذ هذه العمليات باستخدام العوامل المنطقية
-
!
- عامل التشغيل "NOT". يعكس قيمة المتغير المنطقيpublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
إخراج وحدة التحكم:
false
-
&&
- المشغل "و". لا تُرجع قيمة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