فصل 6: انواع داده ها در جاوا و سیستم یونیکد

20 مرداد 1397
java-data-type

نوع داده در واقع اندازه و مقداری که درون یک متغیر نگهداری می شود را مشخص می کند. به طور کلی دو نوع داده وجود دارد:

1- نوع داده اولیه یا بدوی: داده های بدوی اولیه شامل boolean، char، byte، short، int، long، float و double می شود.

2- نوع داده غیراولیه: این نوع داده شامل کلاس ها، آرایه ها و اینترفیس‌ها (رابط ها) می شود.

داده‌های بدوی در جاوا

داده‌های اولیه را می توان به عنوان خانه های سازنده داده های بزرگتر دانست و شامل ساده ترین داده ها می باشد.

از آنجایی که زبان جاوا اصطلاحا استاتیک تایپ می شود، تمام متغیرها قبل از استفاده باید ساخته شوند. به همین دلیل باید نوع یک متغیر مشخص باشد.

8 نوع داده اولیه در جاوا وجود دارد که شامل boolean، char، byte، short، int، long، float و double می شود.

 

نوع داده مقدار پیش فرض سایز پیش فرض
boolean false 1 بیت
char '\u0000' 2 بایت
byte 0 1 بایت
short 0 2 بایت
int 0 4 بایت
long 0L 8 بایت
float 0.0f 4 بایت
double 0.0d 8 بایت

داده Boolean

از داده Boolean برای مشخص کردن دو وضعیت True یا False استفاده می شود. یعنی یک متغیر بولین یکی از این دو مقدار را حتما دارد.

هر متغیر Boolean یک بیت اطلاعات را نشان می دهد اما سایز آن را نمی توان دقیق مشخص کرد.

داده Byte

داده بایت یکی دیگر از نوع داده های اولیه ما می باشد. این داده یک بایت یا معادل 8 بیت حافظه را اشغال می کند و علامت مثبت و منفی را نیز دارد، مقدار بایت از -128 شروع می شود تا 127 ادامه پیدا می کند و مقدار پیش فرض آن 0 می باشد. از بایت معمولا در آرایه های بزرگ برای صرفه جویی در حافظه استفاده می شود زیرا نسبت به داده Integer (عددی) یک چهارم حافظه استفاده می کند.

داده Short

داده شورت یک داده 2 بایتی یا 16 بیتی می باشد که از -32768 تا 32767 را شامل می شود و به طور پیش فرض صفر میباشد.

از آنجایی که این نوع داده هم یک دوم int (داده عددی) حافظه اشغال می کند، از short هم می توان برای ذخیره حافظه و داده ها استفاده کرد.

داده Int

نوع داده Int یک داده 4 بایتی یا 32 بیتی می باشد که مقدار آن از -2147483647 یا دو به توان 31 شروع می شود تا 2147483646 که همان دو به توان 31 منهای یک است ادامه پیدا می کند؛ مقدار ییش فرض آن هم صفر میباشد.

معمولا اگه مشکل حافظه وجود نداشته باشد از int برای ذخیره اعداد استفاده می شود.

داده long

نوع داده long 64 بیت یا 8 بایت می باشد و مقدار آن از منفی دو به توان 63 تا دو به توان 63 منهای یک ادامه پیدا می کند. مقدار پیش فرض آن مانند داده های پیشین صفر می باشد. از long هنگامی استفاده می شود که به رنجی گسترده تر از Int نیاز باشد.

داده Float

Float یک داده 32 بیتی در استاندارد IEEE 754 می باشد که برای نگهداری از اعداد اعشاری از آن استفاده می شود. مقدار اولیه این نوع داده 0.0 می باشد و رنج آن نامحدود است. به دلیل آنکه نصف داده Double حافظه مصرف می کند، اگر به دقت خیلی زیاد نیاز ندارید از float به جای double استفاده کنید.

داده Double

Double یک داده 64 بیتی در استاندارد IEEE 754 می باشد که برای نگهداری از اعداد اعشاری از آن استفاده می شود و دقتی بالاتر از Float دارد. مقدار اولیه این نوع داده 0.0 می باشد و رنج آن نامحدود است.

داده Char

داده Char یک نوع داده 16 بیتی کارکتر یونیکد می باشد که مقدار آن از \u0000 شروع می شود و تا \uffff ادامه پیدا میکند. از داده Char برای ذخیره حروف استفاده می شود.

حال شاید برایتان سوال پیش آمده که چرا از 2 بایت در Char استفاده می شود و \u0000 چیست؟ به این خاطر است که جاوا به جای کدهای اسکی ASCII از یونیکد استفاده می کند. و \u0000 کمترین مقدار در سیستم یونیکد می باشد که معادل صفر می باشد و \uffff معادل 65535  می باشد.

سیستم یونیکد

یونیکد یک استاندارد فراگیر و بین‌المللی برای رمزگذاری کارکترها می باشد و قادر است زبان نوشتار را نشان دهد.

چرا جاوا از یونیکد استفاده می کند؟

غیر از یونیکد، استانداردهای دیگری همچون:

  • ASCII  برای ایالات متحده آمریکا.
  • ISO 8859-1  برای کشورهای غرب اروپا
  • KOI-8  برای روسیه
  • GB18030 and BIG-5  برای زبان چینی

وجود داشتند.

مشکل

دو مشکل پیش آمد:

  1. اینکه یک کد مشخص در هر کدام از این استانداردها حرف متفاوتی را نشان می داد.
  2. به دلیل اینکه برخی از این زبان ها مجموعه حروف و کارکترهای بزرگتری دارند، برخی کارکترها یک بایتی و برخی کارکترها ناچارا دو بایتی یا بیشتر می شدند.

پاسخ

برای حل این مشکلات استاندارد یونیکد توسعه داده شد. در این استاندارد از دو بایت استفاده می شود و کمترین مقدار آن \u0000 و بیشترین مقدار آن \uFFFF می باشد.

نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.