أنواع البيانات في Java: أنواع البيانات البدائية وغير البدائية

نشرت: 2020-12-01

جدول المحتويات

مقدمة

في أي لغة برمجة ، يعد نوع البيانات بمثابة إسناد للبيانات التي تتيح للكمبيوتر أو المترجم معرفة كيفية رغبة المبرمجين في تخصيص البيانات. يضيف نوع البيانات قيدًا على المتغيرات أو وظيفة أثناء تعيين القيم.

تحدد أنواع البيانات هذه سلوك البيانات مثل طريقة تخزين قيم هذا النوع والعمليات التي يمكن إجراؤها على البيانات. دعنا نلقي نظرة على جميع أنواع البيانات التي توفرها جافا.

أنواع البيانات البدائية

لا يمكن تقسيم نوع البيانات الأولية إلى نوع بيانات أبسط. توفر Java 8 أنواع بيانات بدائية ، فلنستكشفها!

بايت

البايت هو نوع صحيح يخزن أعدادًا كاملة تتراوح من -128 إلى 127 ، وهذا يزيل مشاكل قيود الذاكرة إذا كنت تتعامل مع أعداد صغيرة لأنها تتطلب 1 بايت فقط من الذاكرة. يمكن الإعلان عن متغير بايت باستخدام الكلمة الأساسية "بايت". يؤدي تعيين قيمة أعلى من 127 للبايت إلى ظهور خطأ "أنواع غير متوافقة".

البايت n1 = 98 ؛

النظام . خارج . println (n1) ؛

المقتطف أعلاه يطبع 98 كما هو متوقع.

قصيرة

الاختصار هو نوع صحيح يخزن أعدادًا صحيحة تتراوح من -32768 إلى 32767 ، ويستهلك 2 بايت من الذاكرة من القرص. يمكن الإعلان عن متغير قصير باستخدام الكلمة الأساسية "short". يؤدي تعيين قيمة أكبر من 32767 لمتغير قصير إلى ظهور خطأ "أنواع غير متوافقة".

قصير n1 = 9876 ؛

النظام . خارج . println (n1) ؛

المقتطف أعلاه يطبع 9876 كإخراج.

كثافة العمليات

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

كثافة العمليات n1 = 987654 ؛

النظام . خارج . println (n1) ؛

المقتطف أعلاه يطبع 987654 كناتج.

طويل

الآن ، هذا نوع بيانات مثير للاهتمام يستهلك 8 بايت من الذاكرة في القرص. هو نوع عدد صحيح يخزن الأعداد الصحيحة التي تتراوح من -9223372036854775808 إلى 9223372036854775807 ، phew الذي يستغرق وقتًا طويلاً لقراءة هذا النطاق.

يستخدم هذا عندما يفيض نوع البيانات int للعمليات التي نقوم بها. تذكر أننا بحاجة إلى إنهاء القيمة بـ "L" أثناء الإسناد.

طويل n1 = 987654321098765L ؛

النظام . خارج . println (n1) ؛

يطبع المقتطف أعلاه 987654321098765 ، كما هو متوقع.

يطفو

Float هو نوع بيانات فاصلة عائمة ، مما يعني أنه يمكنه تخزين القيم بما في ذلك الدقة العشرية. لنفترض أنك طورت رمزًا لتدوين جميع نفقاتك ، لكنك صارم تمامًا وتريد تتبع كل قرش تنفقه. في هذه الحالة ، لن يؤدي int المهمة لأن int يمكنه تخزين الأعداد الصحيحة فقط.

نحتاج إلى نوع بيانات النقطة العائمة لهذه المهمة. يمكن أن يخزن الطفو الأعداد الكسرية التي تتراوح من 3.4e-038 إلى 3.4e + 038 ، ويمكنه تخزين ما يصل إلى 7 أرقام بدقة عشرية. تذكر أنه يجب إنهاء القيمة بـ "f".

تعويم ن = 98.76f ؛

النظام . خارج . println (ن) ؛

المقتطف أعلاه يطبع 98.76 كناتج.

قراءة: خصائص وفوائد JavaBeans: كيف يجب أن تستخدمها؟

مزدوج

المضاعفة تشبه تعويم ، ولكن كما يقول الاسم فهي ضعف العدد في حالة الدقة العشرية. يمكن أن تحتوي على دقة عشرية مكونة من 15 رقمًا ويمكنها تخزين أعداد كسرية تتراوح من 1.7e-308 إلى 1.7e + 308. تذكر أنه عليك إنهاء القيمة بـ "d".

دعنا نتصفح رمزًا لفهم الفرق بين تعويم ومضاعفة.

اختبار الفصل العام {

الرئيسية العامة الثابتة الفراغ ( سلاسل سلسلة [])

{

تعويم a1 = 1.f / 70 ؛

تعويم b1 = 0 ؛

a2 مزدوج = 1.d / 70 ؛

مزدوج b2 = 0 ؛

تعويم f1 = 1f ؛

مزدوج f2 = 1d ؛

لـ ( int i = 0 ؛ i < 490 ؛ i ++ ) {

ب 1 = ب 1 + أ 1 ؛

ب 2 = ب 2 + أ 2 ؛

إذا (i > 1 && i <= 50 ) {

f1 = f1 * i ؛

f2 = f2 * i ؛

}

}

النظام . خارج . println (b1) ؛ //خط 1

النظام . خارج . println (ب 2) ؛ //خط 2

النظام . خارج . println (f1) ؛ // الخط 3

النظام . خارج . println (f2) ؛ // سطر 4

}

}

يعطينا الحساب الفعلي للتعبير "(1/70) * 490" 7 كإجابة ، لكن تنفيذها في جافا باستخدام تعويم ومضاعفة يعطي إجابة مختلفة. في المقتطف أعلاه ، تمت تهيئة متغير عائم ومتغير مزدوج بـ 1/70 ، وإضافة هذه القيمة إلى متغير آخر 490 مرة يجب أن يعطينا 7 كإجابة.

عند تشغيل سطر المقتطف 1 أعلاه ، يطبع 6.9999795 الذي يحتوي على دقة عشرية مكونة من 7 أرقام ، بينما يطبع السطر 2 6.999999999999978 الذي يحتوي على دقة عشرية مكونة من 15 رقمًا. لذلك إذا لم يوفر لك الطفو دقة عشرية دقيقة ، فيمكنك اختيار المضاعفة. أيضًا ، من المرجح أن يصل الطفو إلى اللانهاية لأن نطاق التعويم يكون أقل عند مقارنته بالضعف.

على سبيل المثال ، إذا قمت بتخزين عاملي عدد كبير إلى حد كبير ، فإن هذا المتغير يصل إلى اللانهاية. من المقتطف أعلاه ، يمكننا أن نرى أن هناك متغيرين مستخدمين لتخزين مضروب 50 وفي الوقت الذي نطبع فيه النتيجة ، يطبع السطر 3 ما لا نهاية ، ويطبع السطر 4 3.0414093201713376E64 ، لذلك إذا كان الطفو لا يفي بالرقم الرقمي الخاص بك النطاق ثم يمكنك اختيار ضعف.

يمكن استخدام كل من float و double كأرقام علمية بالحرف "e" ، حيث تشير "e" إلى قوة 10. على سبيل المثال ، 3e2f تعادل 300.0 في نوع البيانات العائمة ، و 3e4d تعادل 30000.0 في نوع البيانات المزدوجة.

قيمة منطقية

يمكن لنوع البيانات المنطقية أن يأخذ قيمتين فقط صواب وخطأ ، ويتم التصريح عنه باستخدام الكلمة الأساسية المنطقية في جافا. يتم استخدام نوع البيانات هذا عمومًا كمتغير علم لتتبع التغييرات التي نقوم بها في الكود. على سبيل المثال ، تعيين العلم على صواب إذا كان الرقم قابلاً للقسمة على 2 ، وإلا فخطأ.

علم منطقي = صحيح ؛

منطقية b1 = خطأ ؛

النظام . خارج . println (علم) ؛ // يطبع صحيحًا

النظام . خارج . println (b1) ؛ // مطبوعات كاذبة

شار

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

يؤدي تخزين أكثر من حرف في نوع بيانات char إلى حدوث خطأ. أيضًا ، هناك حقيقة ممتعة تتعلق بنوع بيانات char وهي ، كتابة حرف في مخزن عدد صحيح بقيمة ASCII لتلك الشخصية ، والعكس صحيح أيضًا.

char c1 = ' a ' ؛

شار c2 = 66 ؛

النظام . خارج . println (c1) ؛ //خط 1

النظام . خارج . println (c2) ؛ //خط 2

النظام . خارج . println (( int ) c1) ؛ // الخط 3

في سطر المقتطف 1 أعلاه ، يطبع "a" كمخرج كما هو متوقع. يطبع السطر 2 "B" كإخراج لأن 66 يشير إلى B في جدول ASCII. يطبع السطر 3 97 كمخرج لأنه قيمة ASCII لـ 'a'.

لكن ماذا لو أردنا تخزين أكثر من شخصية؟ سنصل إليهم في الفقرات القادمة.

اقرأ أيضًا: 17 من الأفكار والموضوعات الخاصة بمشروع Java مثيرة للاهتمام للمبتدئين

أنواع البيانات غير البدائية

تسمى أنواع البيانات غير الأولية في جافا أيضًا أنواع المراجع لأنها تشير إلى كائنات. يتم إنشاء أنواع البيانات غير البدائية بواسطة المبرمج ولا يتم تحديدها مسبقًا. نظرًا لأنه يُشار إلى العناصر غير الأولية على أنها كائنات ، يمكن تخصيصها بصفر ، وهي ليست حالة في النوع البدائي.

على عكس أنواع البيانات الأولية ، يجب أن يبدأ نوع البيانات غير البدائي بحرف كبير. جميع أنواع البيانات غير البدائية متساوية في الحجم وتستهلك ذاكرة متساوية على القرص والتي تختلف في حالة أنواع البيانات البدائية.

سلسلة

السلسلة هي نوع بيانات خاص في جافا ، حيث تتعارض مع حقيقة أن المبرمجين يحددون الأنواع غير البدائية. نوع بيانات السلسلة هو نوع بيانات غير بدائي ولكنه مُعرّف مسبقًا في جافا ، ويطلق عليه بعض الأشخاص أيضًا نوع بيانات بدائي خاص تاسع.

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

String s1 = " مرحبًا هناك " ؛

النظام . خارج . println (s1) ؛

المقتطف أعلاه سيطبع "مرحبًا هناك" كما هو متوقع.

المصفوفات والفئات والواجهات وما إلى ذلك هي بعض أنواع البيانات غير البدائية الأخرى في جافا.

كيف تحسب نطاق أنواع البيانات؟

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

على سبيل المثال ، يستهلك نوع بيانات البايت بايت واحد من الذاكرة على القرص. على مستوى المحول البرمجي ، يتم تخزين جميع البيانات في شكل بتات ويحتوي البايت الواحد على 8 بتات. الآن يتم استخدام واحدة من 8 بتات لتحديد علامة الرقم ويمكن للـ 7 بت المتبقية تخزين الرقم الفعلي ، وبالتالي فإن الحد الأقصى للرقم الذي يمكننا تخزينه باستخدام 7 بت هو 128.

إذن ، -128 هو الحد الأدنى لنوع بيانات البايت و +127 هو الحد الأعلى لأن الصفر هو الرقم الأول في خط الأعداد بعد الأرقام السالبة.

وبالمثل في أنواع الفاصلة العائمة ، يتم تقسيم البيانات إلى 3 أجزاء موقعة ، و الجزء العشري ، و الأس. يتم استخدام جزء الجزء العشري لتخزين الدقة العشرية ، ويحتوي الطفو على 23 بت الجزء العشري بالإضافة إلى بت واحد مخفي والجزء المزدوج يحتوي على 52 بت الجزء العشري بالإضافة إلى بت واحد مخفي.

بالنسبة لـ float ، سجل (2 ^ 24) / log (10) والذي يساوي تقريبًا 7 ، لذا فإن الدقة العشرية المكونة من 7 أرقام.

بالنسبة للمضاعفة ، سجل (2 ^ 53) / log (10) والذي يساوي تقريبًا 15 ، لذا فإن الدقة العشرية المكونة من 15 رقمًا.

قم بالتسجيل في دورات هندسة البرمجيات من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

خاتمة

لقد رأينا أنواعًا مختلفة من البيانات في جافا ، ونفهم أنواع البيانات البدائية وغير البدائية ، والفرق بين البيانات البدائية وغير البدائية. تجول في مقتطفات التعليمات البرمجية النموذجية للحصول على معرفة أساسية بإعلان أنواع البيانات.

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

الآن بعد أن أصبحت على دراية بأنواع البيانات المختلفة في جافا ، ابدأ في استكشافها!

إذا كنت مهتمًا بمعرفة المزيد حول Java و OOPs وتطوير البرامج الكاملة ، تحقق من upGrad & IIIT-B's Executive PG Program in Full-stack Software Development المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، أكثر من 9 مشاريع ، ومهام ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

استعد لمهنة المستقبل

تقدم الآن للحصول على درجة الماجستير في هندسة البرمجيات