التحويل ونطاق القيم
مُقدَّم| English | المعنى |
|---|---|
| casting/ˈkæstɪŋ/ | التحويل النوعي |
| truncates/ˈtrʌŋkeɪts/ | قطع |
| widening/ˈwaɪdənɪŋ/ | توسيع |
| narrowing/ˈnærəʊɪŋ/ | تضييق |
| range/reɪndʒ/ | نطاق |
| overflow/ˌəʊvəˈfləʊ/ | فائض |
تغيير نوع القيمة
- الإسقاط (Casting) يحول قيمة من نوع إلى آخر.
- اكتب النوع المستهدف بين أقواس:
(double) 5يعطي5.0؛(int) 3.9يعطي3. - الإسقاط إلى
intيقطع — يزيل الجزء العشري، ولا يُقرب. (int) 3.9هي3، و(int) -2.7هي-2(باتجاه الصفر).
التوسيع يحدث تلقائياً
- الانتقال من نوع أصغر إلى أكبر (
int→double) هو توسيع. - التوسيع آمن، لذا تقوم جافا به تلقائياً:
double d = 5;تخزن5.0. - لا تُفقد معلومات عند الانتقال من
intإلىdouble. - نادراً ما تحتاج لكتابة إسقاط توسعي، لكنه مسموح.
التضييق يتطلب إسقاطاً صريحاً
- الانتقال من أكبر إلى أصغر (
double→int) هو تضييق — قد يفقد بيانات. - تتطلب جافا إسقاطاً صريحاً:
int n = (int) 3.9;(بدون الإسقاط لن يتم التجميع). - الإسقاط هو وعد منك بأن "أعلم أنني أزيل العشرات".
- التضييق يقطع باتجاه الصفر.
النطاق والزيادة
- لكل نوع نطاق ثابت:
intيستوعب تقريباً ±2.1 مليار. - تجاوز النطاق يسبب زيادة (Overflow) — تنقلب القيمة إلى رقم خاطئ.
- لا يُرفع خطأ؛ النتيجة تكون خاطئة بصمت.
- للأعداد الصحيحة الكبيرة جداً، يحتاج نوع أكبر (مثل
long).
التحويل إلى int يُقصر — ولا يُقرب. (int) 3.9 هو 3، وليس 4؛ (int) 2.99 هو 2. لإجبار القسمة العشرية، حوّل أحد المؤثرات: (double) 7 / 2 هو 3.5، لكن (int)(7.0 / 2) هو 3. وراقب الفائض: ناتج int يتجاوز ±2.1 مليارًا يلتف صامتًا دون خطأ.
حساب المتوسط بين عددين صحيحين بشكل صحيح:
int a = 7, b = 2;int avg = a / b;→3(قسمة الأعداد الصحيحة تزيل الباقي — وهو على الأرجح ليس ما تريده).double avg = (double) a / b;→3.5(تحويل أحد الجانبين يجبر القسمة العشرية).
التحويل (type) value يحوّل بين الأنواع. int → double (توسيع) يتم تلقائياً وآمناً؛ double → int (تضييق) يحتاج إلى تحويل صريح ويُقطّع نحو الصفر (بدون تقريب). لكل نوع نطاق ثابت؛ وتجاوزه يسبب انفجاراً صامتاً.
التحويل بين int و double
(int) تقصّر 3.9 إلى 3؛ تحويل أحد الطرفين يعطي 3.5.
ما هي قيمة (int) 3.9 في جافا؟
Difficulty 2/5 · 140 coins + a small bonus on first completion today
التحويل إلى int يقصّر (يحذف العشرات) → 3، وليس 4.
تحويل int إلى double (تحويل آمن وتلقائي) يسمى...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
الصغير → الكبير هو توسيع، يتم تلقائياً.
أي مما يلي يحتاج تحويل صريح للتجميع؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
double → int هو تضييق ويتطلب التحويل الصريح.
ما هي قيمة (double) 7 / 2؟
Difficulty 2/5 · 140 coins + a small bonus on first completion today
تمرير operand واحد يُلزم القسمة العشرية → 3.5.
نتيجة int خارج نطاقها تسبب تجاوزاً، وتُبلغ Java ذلك كخطأ.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
التجاوز يلتف صامتاً — لا يتم رفع خطأ.