هل يمكن عمل Casting بين المتحولات من نوعي INT , boolen ؟

تحية طيبة

كنت أقرا تمرين وجد بكتاب

Introduction to Java Programming Comprehensive 8E Y. Daniel Liang

وهو على الشكل التالي

Can the following conversions involving casting be allowed? If so, find the converted result

boolean b = true;

i = (int)b;

int i = 1;

boolean b = (boolean)i;

قُمتُ بتطبيق المثال ولكن واجهت خطأ أنه لا يمكنني عمل Casting

فهل هذا مُمكن في المثال السابق؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

في لغة Java عكس C++ ف Boolean لايعتبر Integer بالاصل. بمعنى أن قيمة True في لغة جافا هي Object من نوع Boolean بينما في لغة C++ قيمة True تعتبر int (رقم واحد).

في C++

عندما تكتب

    bool test = true;

    int a = test + 1;

    std::cout << a << endl;

ستظهر لك الإجابة اثنان. لماذا؟ لأن في لغة C++ عندما تكتب

     bool test = true;

كأنك تكتب

     int test = 1;

بينما في لغة جافا true هي كائن من نوع boolean حقيقي. وصنفي boolean و Int أو integer ليس بينهما علاقة وراثية في لغة جافا لذلك لاتستطيع عمل Casting لمتغير من نوع Boolean إلى نوع Integer في جافا وعلى العكس C++

يمكنك كتابة Method يقوم بالعملية ،

ConvertIntToBoolean(int n)

{

return n !=0;

}

و بهذا يكون مثل C++ ، كل رقم غير 0 هو true ،

bitsnaps أضف ردا

فقط كإضافة، للتحويل بين البيانات في جافا يستخدم أساسا التحويل valueOf لكل نوع من البيانات، مثال من String إلى Integer والعكس:

    String s = "1";
    int i =Integer.valueOf(s);
    s = String.valueOf(i);

من Boolean إلى String مثال:

    boolean b = true;
    String s = String.valueOf(b);

لكن لا يمكن تحويل Boolean (مثل القيمة true) إلى Integer مباشرة بـ valueOf (لأنها ستحول إلى String نص "true")، إلا إذا كتبت دالة خاصة.