خاصية Type Casting في لغة جافا، والتي تُعرف أيضًا باسم "تحويل الأنواع"، هي عملية تحويل قيمة من نوع بيانات إلى نوع بيانات آخر. تُستخدم هذه الخاصية عندما تحتاج إلى التعامل مع قيمة بنوع بيانات مختلف عن نوعها الأصلي.

لماذا نحتاج إلى Type Casting؟

في بعض الأحيان، قد تحتاج إلى إجراء عمليات حسابية أو منطقية بين متغيرات من أنواع بيانات مختلفة. في هذه الحالات، يجب تحويل أحد المتغيرات إلى نوع بيانات الآخر لكي تتم العملية بنجاح. كما أن هناك حالات أخرى قد تحتاج فيها إلى تحويل نوع البيانات لتخزين قيمة في متغير من نوع بيانات مختلف.

أنواع Type Casting في جافا:

هناك نوعان رئيسيان من Type Casting في جافا:

  1. Implicit Type Casting (التحويل الضمني):
  • يُعرف أيضًا باسم "Widening Casting" أو "التحويل التوسيعي".
  • يحدث تلقائيًا بواسطة مترجم جافا عندما يتم تحويل نوع بيانات أصغر إلى نوع بيانات أكبر.
  • لا يتطلب أي تعليمات برمجية إضافية.
  • مثال: تحويل int إلى long أو float إلى double.
Java
int x = 10;
long y = x; // تحويل ضمني من int إلى long
float a = 3.14f;
double b = a; // تحويل ضمني من float إلى double
  1. Explicit Type Casting (التحويل الصريح):
  • يُعرف أيضًا باسم "Narrowing Casting" أو "التحويل التضييقي".
  • يحدث عندما يتم تحويل نوع بيانات أكبر إلى نوع بيانات أصغر.
  • يتطلب تعليمات برمجية إضافية باستخدام عامل التحويل (type).
  • قد يؤدي إلى فقدان بعض البيانات إذا كانت القيمة الأصلية أكبر من نطاق نوع البيانات الجديد.
  • مثال: تحويل double إلى int أو long إلى int.
Java
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)، سيتم اقتطاع الجزء العشري، ولن يتم التقريب.
  • يجب توخي الحذر عند استخدام التحويل الصريح، خاصةً عند تحويل أنواع بيانات كبيرة إلى أنواع بيانات صغيرة، لتجنب فقدان البيانات أو حدوث أخطاء غير متوقعة.

مثال شامل:

Java
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 هي أداة قوية في جافا تسمح لك بتحويل أنواع البيانات المختلفة، ولكن يجب استخدامها بحذر مع مراعاة أنواع التحويل المختلفة وإمكانية فقدان البيانات في بعض الحالات