خاصية Type Casting في لغة جافا، والتي تُعرف أيضًا باسم "تحويل الأنواع"، هي عملية تحويل قيمة من نوع بيانات إلى نوع بيانات آخر. تُستخدم هذه الخاصية عندما تحتاج إلى التعامل مع قيمة بنوع بيانات مختلف عن نوعها الأصلي.
لماذا نحتاج إلى Type Casting؟
في بعض الأحيان، قد تحتاج إلى إجراء عمليات حسابية أو منطقية بين متغيرات من أنواع بيانات مختلفة. في هذه الحالات، يجب تحويل أحد المتغيرات إلى نوع بيانات الآخر لكي تتم العملية بنجاح. كما أن هناك حالات أخرى قد تحتاج فيها إلى تحويل نوع البيانات لتخزين قيمة في متغير من نوع بيانات مختلف.
أنواع Type Casting في جافا:
هناك نوعان رئيسيان من Type Casting في جافا:
- Implicit Type Casting (التحويل الضمني):
- يُعرف أيضًا باسم "Widening Casting" أو "التحويل التوسيعي".
- يحدث تلقائيًا بواسطة مترجم جافا عندما يتم تحويل نوع بيانات أصغر إلى نوع بيانات أكبر.
- لا يتطلب أي تعليمات برمجية إضافية.
- مثال: تحويل
int
إلىlong
أوfloat
إلىdouble
.
int x = 10;long y = x; // تحويل ضمني من int إلى longfloat a = 3.14f;double b = a; // تحويل ضمني من float إلى double
- Explicit Type Casting (التحويل الصريح):
- يُعرف أيضًا باسم "Narrowing Casting" أو "التحويل التضييقي".
- يحدث عندما يتم تحويل نوع بيانات أكبر إلى نوع بيانات أصغر.
- يتطلب تعليمات برمجية إضافية باستخدام عامل التحويل
(type)
. - قد يؤدي إلى فقدان بعض البيانات إذا كانت القيمة الأصلية أكبر من نطاق نوع البيانات الجديد.
- مثال: تحويل
double
إلىint
أوlong
إلىint
.
double pi = 3.14159;int integerPi = (int) pi; // تحويل صريح من double إلى int (سيتم اقتطاع الجزء العشري)long bigNumber = 10000000000L;int smallNumber = (int) bigNumber; // تحويل صريح من long إلى int (قد يحدث فقدان للبيانات إذا كانت قيمة bigNumber خارج نطاق int)
ملاحظات مهمة:
- عند إجراء تحويل صريح من نوع بيانات ذي فاصلة عشرية (مثل
float
أوdouble
) إلى نوع بيانات صحيح (مثلint
أوlong
)، سيتم اقتطاع الجزء العشري، ولن يتم التقريب. - يجب توخي الحذر عند استخدام التحويل الصريح، خاصةً عند تحويل أنواع بيانات كبيرة إلى أنواع بيانات صغيرة، لتجنب فقدان البيانات أو حدوث أخطاء غير متوقعة.
مثال شامل:
public class TypeCastingExample { public static void main(String[] args) { int intValue = 150; long longValue = intValue; // تحويل ضمني System.out.println("longValue: " + longValue);
double doubleValue = 19.99; int intFromDouble = (int) doubleValue; // تحويل صريح (سيتم اقتطاع الجزء العشري) System.out.println("intFromDouble: " + intFromDouble);
byte byteValue = (byte) intValue; // تحويل صريح (قد يحدث فقدان للبيانات إذا كانت intValue أكبر من نطاق byte) System.out.println("byteValue: " + byteValue); }}
باختصار، Type Casting هي أداة قوية في جافا تسمح لك بتحويل أنواع البيانات المختلفة، ولكن يجب استخدامها بحذر مع مراعاة أنواع التحويل المختلفة وإمكانية فقدان البيانات في بعض الحالات