اذهب إلى المحتوى

السؤال

نشر

عند الرغبة بتحويل قيمة كائن  إلى قيمة بدائية نستخدم الدالة public xxx xxxValue() كما الكود أدناه :


public class Main {
  
    public static void main(String[] args) {
        //
    Integer f = 12;
    long g = f.longValue();
System.out.print (g);
}
    }

عند تشغيل الكود في برنامج intellij سنحصل على النتيجة :

E:\SETUP\jdk\bin\java.exe "-javaagent:P:\SETUP\jetbrain\intellij\IntelliJ IDEA Community Edition 2023.1.2\lib\idea_rt.jar=54249:P:\SETUP\jetbrain\intellij\IntelliJ IDEA Community Edition 2023.1.2\bin" -Dfile.encoding=UTF-8 -classpath P:\untitled\out\production\untitled Main
12
Process finished with exit code 0

ويمكننا استخدام الكود التالي بدون استخدام هذه الدالة :

public class Main {

    public static void main(String[] args) {
        //
    Integer f = 12;
    long g = f;
System.out.print (g);
}
    }

وسنحصل على نفس النتيجة, إذاً لماذا توجد هذه الدالة؟ وأي الطريقتين هي الأسرع؟

Recommended Posts

  • 0
نشر

في حالتك هذه لا فرق، حيث أنك تقوم بتخزين متغير ذو سعة أقل في متغير ذو سعة أكبر.

في حالات أخرى مثلاً عندما تريد تخزين float في long فعليك القيام بما يدعى التحويل casting، و هو تحويل القيمة من float إلى long.

و عندها تكون هذه الدالة مفيدة لذلك.

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

  • 0
نشر

دالة xxxValue() في جافا تستخدم لتحويل قيمة كائن من النوع xxx إلى قيمة بدائية من النوع المناسب، حيث xxx هو نوع الكائن الأصلي.

مثلاً، في الكود الخاص بك، f.longValue() يقوم بتحويل قيمة الكائن f من النوع Integer إلى قيمة بدائية من النوع long.

والدالة xxxValue() توجد في العديد من أنواع الكائنات في جافا، مثل Integer, Double, Float, Long, Boolean, وغيرها، وتستخدم للتحويل بين هذه الأنواع المختلفة.

أما بالنسبة للاختلاف بين استخدام الدالة xxxValue() وعدم استخدامها في الحالة التي ذكرتها، في حالة قام الكود بالتحويل المباشر مثل long g = f;، يتم تنفيذ عملية التحويل ضمن عملية التجاوز الضمني (implicit casting)، والتي تتم بشكل تلقائي من قبل جافا، وذلك لأن الكائن f من النوع Integer يمكن تحويله بشكل ضمني إلى long.

بالنسبة لأيهما أسرع، فلا يوجد اختلاف كبير في الأداء بين الطريقتين، فتتم عملية التحويل في حالة استخدام الدالة xxxValue() ضمن الدالة نفسها، بينما تتم عملية التحويل بشكل ضمني في حالة استخدام عملية التجاوز الضمني.

عمومًا، الفرق في الأداء بين الطريقتين غير ملحوظ وغالبًا لا يؤثر على أداء البرنامج.

  • 0
نشر

دالة الـ xxxValue() هي دالة متوفرة في العديد من الكائنات في لغة جافا، وتستخدم لتحويل قيمة الكائن إلى نوع بدائي معين. وهي مفيدة عندما تريد تحويل قيمة كائن إلى نوع بدائي محدد، مثل تحويل قيمة Integer إلى int أو Long إلى long.

في الكود الذي قدمته، تم استخدام دالة longValue() لتحويل قيمة Integer إلى long. ولكن يمكن استخدام المطابقة الضمنية (implicit casting) بحيث يتم تحويل القيمة تلقائياً من Integer إلى long عند الحاجة، كما هو موضح في الكود الثاني.

ومع ذلك، يجب الانتباه إلى أن استخدام المطابقة الضمنية ليس دائمًا ممكنًا، فبعض الأنواع البدائية لا يمكن تحويلها تلقائيًا إلى بعضها الآخر. على سبيل المثال، لا يمكن تحويل قيمة Double إلى int تلقائيًا، ويجب استخدام الدالة intValue() لتحويلها.

بالنسبة للأداء، فإن استخدام المطابقة الضمنية أسرع بشكل عام من استخدام الدالة xxxValue()، حيث يعتبر تحويل القيمة تلقائيًا أسرع من استدعاء الدالة وتنفيذها. ومع ذلك، يمكن أن تكون الفرق في الأداء ضئيلًا بشكل كبير وغير ملحوظ في حالة تحويل قيمة واحدة فقط

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...