في Java ، يمكن مواجهة تحويل النوع غالبًا ، من تعريف المتغيرات إلى النسخ ، وحساب المتغيرات العددية إلى نقل المعلمات للطرق ، والنمذجة بين الفئات الأساسية والفئات المشتقة ، وما إلى ذلك. يمكن رؤية تحويل النوع في كل مكان. يلعب تحويل النوع في Java دورًا مهمًا في ترميز Java.
هناك العديد من القضايا التي يجب الانتباه إليها عند تحديد المتغيرات. إذا لم تكن حريصًا ، فستفقد الدقة أو الأنواع غير المتوافقة.
على سبيل المثال:
1. عند تحديد بيانات عدد صحيح طويل ، يجب إضافة اللاحقة L أو L.
Long L = 123456789012345L
2. عند تحديد نوع دقيق واحد (7-8 بت رقم مهم) ، يجب إضافة اللاحقة F أو F.
تعويم f = 12.5f
3. لا يمكن تحويل نوع Boolean إلى أنواع بيانات أخرى.
من بينها ، نواجه في كثير من الأحيان مشاكل تحويل نوع البيانات. أكثرها شيوعًا هي التحويل الضمني وتحويل الإلقاء. دعنا نحللها.
تحويل ضمني
ميزة:
من صغير إلى كبير ، يمكن تحويله ضمنيًا ، وسيتم تحسين نوع البيانات تلقائيًا.
بايت ، قصير ، char -> int -> طويل -> تعويم -> مزدوج
ملاحظة: الطول هو 8 بايت والطفو هو 4 بايت.
طويل هو عدد صحيح ، تعويم هو نوع نقطة عائمة. تختلف قواعد التخزين للأعداد الصحيحة وأرقام النقاط العائمة. تذكر أن نطاق طويل أصغر من التعويم.
مثال:
البايت A = 10 ؛
int b = a ؛
عندما يتم تجميع intb = a ، يتم تحويل A ضمنيًا إلى نوع int.
حالات
ميزة:
من كبير إلى صغير (إذا كنت تعرف بوضوح أنه يمكن تمثيل البيانات بنوع البيانات هذا ، يمكنك استخدام الصب)
شكل:
(نوع البيانات المحولة) متغير أو قيمة.
ملاحظة: بشكل عام ، لا ينصح الصب على الإطلاق.
مثال 1:
int a = 10 ؛ byte b = (byte) a ؛
عندما يتم تجميع البايت B = (البايت) A ، يتم إلقاء A على نوع البايت.
مثال 2:
class qiangzhidemo {public static void main (string [] args) {byte b = (byte) 130 ؛ system.out.println (b) ؛ // Print Result-126}}تحليل:
البيانات 130 الافتراضية لبيانات النوع العشري ،
الخطوة 1: تحويل عشري 130 إلى بيانات ثنائية.
10000010
الخطوة 2: تمثيل 130 في الذاكرة كما يلي
الكود الأصلي: 00000000000000000000000 00000000 10000010
الخطوة 3: ابحث عن رمز تكملة INT130
لأن 130 هو رقم إيجابي ، فإن الرمز العكسي والرمز المكملة يتوافقون مع الكود الأصلي.
رمز تكملة: 00000000000000000000000 0000000000000010
الخطوة 4: اعتراض الكود المكملة ، وترك فقط آخر 8 أرقام.
(البايت) رمز مكملة 130 هو: 10000010
الخطوة 5: تحويل هذا المكمل إلى الكود الأصلي.
نظرًا لأن بت الإشارة (البت الأول) هي 1 ، فإن الرقم هو رقم سالب.
الرمز العكسي: 10000001 (رمز مكمل 1)
الكود الأصلي: 111111110 (يظل الرمز دون تغيير ، يتم قلب بت البيانات)
تحويل إلى عشري إلى -126 ، لذلك طباعة -126 أخيرًا.
مثال 3:
السراويل = 1 ؛ s = s +1 ؛
و
السراويل = 1 ؛ S+= 1 ؛
هل هناك أي مشكلة؟ لماذا؟
تحليل:
سيقوم البرنامج الأول بالإبلاغ عن خطأ: خطأ: النوع غير المتوافق: قد تكون هناك خسائر عند التحويل من int إلى قصيرة
السبب: s = s+1 ؛ s+1 سيتم تحويلها ضمنيًا إلى نوع int. عندما يتم تعيين نوع int إلى النوع القصير ، قد يضيع.
يمكن تجميع البرنامج الثاني وتشغيله.
السبب: S+= 1 ، على الرغم من أنه يمكن اعتباره s = s+1 ، لا يزال هناك فرق. يوجد فريق من S+= 1 ، أي ، S = (قصير) (S+1) ، والذي سيجبر قيمة S+1 على نوع قصير ، لذلك لن يكون هناك خطأ.
ملخص:
في حالة حدوث مشكلة تحويل نوع البيانات في بعض البرامج المصغرة ، فقد نكون قادرين على رؤيته في لمحة. ومع ذلك ، عند كتابة نظام ضخم ولديه كمية كبيرة من البيانات ، قد تتسبب هذه المشكلات الصغيرة في أخطاء النظام أو حتى تعطل ، لذلك يتعين علينا فهم دقة كتابة التعليمات البرمجية المبكرة.
يقدم المحتوى أعلاه تحويل Java Basic الضمني مقابل تحويل CAST ، أتمنى أن تنال إعجابك.