CodeGym /مدونة جافا /Random-AR /جافا نوع الصب
John Squirrels
مستوى
San Francisco

جافا نوع الصب

نشرت في المجموعة

ما هو نوع الصب في جافا؟

نوع البيانات عبارة عن مجموعة محددة مسبقًا من القيم التي تحدد نوع القيم التي يمكن تخزينها فيها بالإضافة إلى العملية التي يمكن تنفيذها عليها.
Java Type Casting هي عملية يتم من خلالها تحويل نوع بيانات إلى نوع آخر.
يمكن أن تكون ضمنية وصريحة . تتم عملية التلبيس الضمني (المعروف أيضًا باسم التلبيس التلقائي) بواسطة المترجم. تتم عملية الكتابة الصريحة يدويًا بواسطة المبرمج في الكود.

لماذا يعد صب النوع مطلوبًا؟

تحتوي Java على أنواع بيانات بدائية مختلفة تتطلب مساحات مختلفة في الذاكرة. يمكن أن يسبب هذا مشكلات في التوافق أثناء تعيين قيمة من نوع بيانات إلى آخر. إذا كانت أنواع البيانات متوافقة بالفعل، فسيتم إجراء عملية الكتابة تلقائيًا بواسطة المترجم. وبالتالي، فإن التلبيس يحل مشكلة التوافق الرئيسية عند التعامل مع أنواع البيانات المختلفة في برنامجنا.

أنواع صب نوع جافا

هناك نوعان من نوع الصب في Java.
  1. توسيع نوع الصب - يُعرف أيضًا باسم صب النوع الضمني أو التلقائي
  2. تضييق النوع - يُعرف أيضًا باسم النوع الصريح أو اليدوي

توسيع نوع الصب

يشير توسيع الكتابة، كما يوحي الاسم، إلى توسيع نوع بيانات أصغر إلى نوع بيانات أكبر. نقوم بتنفيذ عملية التلبيس هذه عندما نريد تحويل نوع صغير إلى نوع كبير. يجب أن تكون أنواع البيانات متوافقة مع بعضها البعض. لا يوجد تحويل ضمني من النوع الرقمي إلى النوع char أو المنطقي. في Java، أنواع char وboolean غير متوافقة.
بايت -> قصير -> شار -> إنت -> طويل -> تعويم -> مزدوج
يتم إجراء هذا النوع من الصب تلقائيًا بواسطة المترجم دون أي فقدان للمعلومات. لا يتطلب أي مشغل خارجي من قبل المبرمج.

مثال

//Automatic type conversion
public class WideningExample {
   public static void main(String[] args) {

       int i = 100;
       System.out.println("int value: " + i);

       // int to long type
       long l = i;
       System.out.println("int to long value: " + l);

       // long to float type
       float f = l;
       System.out.println("int to float value: " + f);


       byte b = 1;
       System.out.println("byte value: " + b);

       // byte to int type
       i = b;
       System.out.println("byte to int value: " + i);

       char c = 'a';
       System.out.println("char value: " + c);

       // char to int type
       i = c;

       // prints the ASCII value of the given character
       // ASCII value of 'a' = 97
       System.out.println("char to int value: " + i);
   }
}

انتاج |

قيمة int: 100 int إلى قيمة طويلة: 100 int إلى القيمة العائمة: 100.0 قيمة بايت: 1 بايت إلى قيمة int: 1 قيمة char: char إلى قيمة int: 97

توضيح

في الكود أعلاه، أظهرنا توسيع الكتابة التي يتم إجراؤها بواسطة المترجم تلقائيًا. أولًا، قمنا بتعيين قيم إلى int و byte و char . ثم قمنا بتعيين قيم int إلى long و float ، وكلاهما أكبر من int . لقد قمنا أيضًا بتعيين قيم البايت والشار إلى int . يعد كل من byte و char أنواع بيانات أصغر من int ، وبالتالي، كانت هذه التحويلات ضمنية.

تضييق نوع الصب

يشير تضييق التلبيس، كما يوحي الاسم، إلى تضييق نوع بيانات أكبر إلى نوع بيانات أصغر. نقوم بتنفيذ عملية التلبيس هذه عندما نريد تحويل نوع كبير إلى نوع صغير.
مزدوج -> تعويم -> طويل -> إنت -> شار -> قصير -> بايت
بالنسبة لهذا النوع من الإرسال، فإننا نتجاوز التحويل الافتراضي لجافا عن طريق تحديد التحويل الخاص بنا. ولتحقيق ذلك، نكتب المتغير أو القيمة التي تحتاج إلى كتابتها مسبوقة بنوع البيانات الهدف بين قوسين '()'. ومع ذلك، فإن هذا النوع من الصب قد يؤدي إلى فقدان محتمل للدقة.

مثال

//Manual Type Conversion
public class NarrowingExample {
   public static void main(String[] arg) {

       // double data type
       double d = 97.04;
       // Print statements
       System.out.println("double value: " + d);

       // Narrowing type casting from double to long
       // implicitly writing the target data type in () followed by initial data type
       long l = (long) d;

       // fractional part lost - loss of precision
       System.out.println("long value: " + l);

       // Narrowing type casting from double to int
       // implicitly writing the target data type in () followed by initial data type
       int i = (int) l;

       // fractional part lost - loss of precision
       System.out.println("int value: " + i);

       // Narrowing type casting from double to int
       // implicitly writing the target data type in () followed by initial data type
       char c = (char) i;

       // displaying character corresponding to the ASCII value of 100
       System.out.println("char value: " + c);
   }
}

انتاج |

القيمة المزدوجة: 97.04 القيمة الطويلة: 97 قيمة int: 97 قيمة الحرف: أ

توضيح

يجب أن يتم تضييق عملية الكتابة بشكل صريح بواسطة المبرمج باستخدام بناء جملة قياسي. في البرنامج أعلاه، بدأنا بقيمة مزدوجة وهي أكبر من أنواع البيانات الطويلة و int . لقد قمنا بطباعة هذا المزدوج إلى الطويل و int باستخدام الأقواس مع أنواع البيانات المستهدفة المطلوبة. لقد قمنا أيضًا بطباعة "int" يدويًا على "char".

خاتمة

بحلول نهاية هذا المنشور، نأمل أن تكون قد تعرفت على Java Type Casting بالتفصيل. لقد تعلمت نوعين من الكتابة في جافا. لقد تعلمت أيضًا كيفية تحويل أنواع البيانات غير المتوافقة يدويًا باستخدام تضييق الكتابة. يمكنك تجربة مجموعات أخرى من أنواع البيانات بقيم مختلفة بنفسك لفهمها بشكل أكثر عمقًا. استمر في التدرب على التحكم بشكل أعمق في هذا المفهوم. وحتى ذلك الحين، استمر في النمو واستمر في التألق!
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION