المتغير الذي يمكن أن يحتوي على واحدة فقط من قيمتين، صحيح أو خطأ، هو متغير من النوع المنطقي، والصواب والخطأ عبارة عن كميات منطقية مباشرة. يمكنك تعريف متغير منطقي يسمى الحالة باستخدام العبارة التالية:
الحالة المنطقية = صحيح
يقوم هذا البيان بتهيئة حالة المتغير بقيمة حقيقية. يمكنك أيضًا استخدام عبارة المهمة لتعيين قيمة لمتغير منطقي. على سبيل المثال البيان،
الحالة = خطأ
اضبط قيمة الحالة المتغيرة على false.
في الوقت الحالي، لا يمكننا أن نفعل أكثر من مجرد تعيين قيم للمتغيرات المنطقية، ولكن كما سترى في الفصل التالي، تعد المتغيرات المنطقية مفيدة عند اتخاذ القرارات في البرنامج، خاصة عندما نتمكن من استخدام التعبيرات لإنشاء It أكثر فائدة للنتائج المنطقية.
هناك العديد من العوامل التي تجمع بين القيم المنطقية، بما في ذلك: Boolean AND (AND)، وBoolean OR (oR)، وBoolean NOT (التي تتوافق مع &&، و11، و!، على التوالي)، بالإضافة إلى عوامل المقارنة التي تنتج نتائج منطقية. بدلاً من تعلمها بشكل ملخص الآن، ننتقل إلى الفصل التالي، حيث يمكننا أن نرى في التمارين كيفية تطبيقها لتغيير ترتيب تنفيذ البرنامج.
شيء واحد عليك ملاحظته هو أن المتغير المنطقي يختلف عن أنواع البيانات الأساسية الأخرى، ولا يمكن تحويله إلى أي نوع أساسي آخر، ولا يمكن تحويل الأنواع الأساسية الأخرى إلى النوع المنطقي.
مقارنة بين ثلاث طرق لإنشاء كائنات منطقية في Java
الطريقة الأولى الشائعة لإنشاء Java للكائنات المنطقية هي من خلال العامل الجديد
Boolean boolean1 = new Boolean(1==1);
والثاني من خلال قيمة الطريقة الثابتة
Boolean boolean1 = Boolean.valueOf(1==1);
النوع الثالث هو الملاكمة الأوتوماتيكية بعد JDK1.5
منطقية boolean1 = 1==1;
ما الفرق بين هذه الطرق الثلاثة؟
دعونا نلقي نظرة على جزء من التعليمات البرمجية أولاً
Boolean[] boolean1 = new Boolean[100];Boolean[] boolean2 = new Boolean[100];Boolean[] boolean3 = new Boolean[100];for (int i = 0; i < 100;i++){ boolean1[i ] = Boolean.valueOf(1==1);}for (int i = 0;i < 100;i++){ boolean2[i] = new Boolean(1==1);}for (int i = 0; i < 100;i++){ boolean3[i] = 1==1;}System.out.println("valueOf: " + String.valueOf(boolean1[1] == boolean1[2]));System.out.println("new Boolean: " + String.valueOf(boolean2[1] == boolean2[2]));System.out.println("التفاف تلقائي: " + String.valueOf(boolean3[1] == boolean3[2]));
الإخراج هو:
valueOf: truenew Boolean: falseauto Wrap: true
لماذا يحدث هذا؟
والسبب هو أن الكائن المنطقي الذي تم إنشاؤه باستخدام كائن جديد ينشئ باستمرار كائن مثيل جديد، بينما تقوم valueOf بإرجاع متغيرات الأعضاء الثابتة في الفئة المنطقية ولا تنشئ عددًا كبيرًا من متغيرات المثيل المتطابقة. الالتفاف التلقائي يشبه valueOf.
في الواقع، توصي وثائق jdk أيضًا باستخدام valueOf بدلاً من new لإنشاء كائنات فئة منطقية.