قسمت سوم : انواع داده اولیه(Primitive) و مرجع(References)
لازم است در ابتدای کار گفته شود که جاوا زبانی است که نوع داده در آن به شدت کنترل می شود(Type-Safety است), در واقع بخشی از امنیت و استحکام جاوا از این امر ناشی می شود.
متغیر: متغیر واحد پایه ذخیره سازی در برنامه نویسی است. هر متغیر بوسیله ترکیبی از شناسه, نوع, مقدار اولیه(دلخواه) تعریف می شود. زمانیکه یک متغیر ایجاد می کنیم یک قسمت از فضای RAM به این متغیر اختصاص می یابد.
متغیر ها در جاوا در دو نوع هستند:
1. Primitive Data Type
2. Reference/Object Data Type
- Primitive Data Type ها مقادیر پایه را نگهداری می کنند مانند: int, char, float, short, byte, Boolean, Double, long .
- Reference/Object Data Type ها آدرس ارجاع به Object ها(اشاره گر به یک شیء که در حقیقت همان آدرس متغیر در RAM است) را نگهداری میکنند.
نحو کلی تعریف متغیر :
Type identifier [= value];
int temp = 88;
مثال:
تعریف متغیر شامل دو مرحله است:
- مرحله Declaration (اعلان) :
- مرحله Creation(ایجاد) :
در حقیقت Type نام یک کلاس است و identifier نام متغیر شما است.
متغیر ها یا Single Value هستند مانند int, char, float, short, byte, Boolean, Double, long که همان نوع داده پایه یا Primitive Variable هستند و یا Multiple Value هستند مانند Collection, Class, Array که اسم دیگر آنها Reference Variable می باشد.
داده پایه(Primitive Variable) : متغیر های تعریف شده از این نوع از Stack(یک حافظه کوچک از RAM و CPU که فضای کم ولی سرعت بالا دارد) فضای حافظه می گیرند. در عمل انتساب مقدار متغیر سمت راست انتقال داده می شود.
داده های پایه(Primitive Type ها) خود به چهار گروه تقسیم می شوند :
- اعداد صحیح, که شامل byte, short, int, long می شود که اعداد کامل علامت دار می باشد.
- اعداد اعشاری با ممیز شناور, که شامل float و double است.
- کاراکترها, که شامل char است.
- بولی, این گروه شامل Boolean است که شامل مقادیر بولی مانند True/False است.
داده مرجعی(Reference Variable) : نوع داده ای که از طریق اشاره گرها دستیابی می شوند و از دو جای مختلف حافظه می گیرند, Stack و Heap(یک حافظه بزرگتر از Stack است که فضای زیادتر ولی سرعت پایین تر از Stack دارد) .
* نکته : مقدار پیش فرض یک متغیر از نوع Reference مقدار NULL می باشد.
ایجاد یک متغیر از نوع Reference شامل سه مرحله است :
گاهی اوقات در حین کد نویسی نیاز می باشد که مقدار یک متغیر به یک متغیر دیگر انتساب داده شود. در این مواقع دو حالت پیش می آید:
حالت اول: نوع متغیر مبدا و نوع متغیر مقصد یکی می باشد که بدون مشکل انجام می شود. مثال :
حالت دوم: نوع متغیر مبدا و مقصد یکی نیست که به خطای کامپایلر بر میخوریم. در این حالت باید عمل Type Casting(تبدیل نوع) را انجام داد. مثال :
دو نوع Type Casting داریم:
1. تبدیل ضمنی(Implicit Casting) : زمانیکه بخواهیم نوع داده کوچکتر مانند int را داخل نوع داده بزرگتر مانند long بریزیم. نیاز به کدنویسی ندارد و کامپایلر این کار را انجام می دهد :
* این تبدیل, یک تبدیل امن(Safe Casting) می باشد.
* کامپایلر اینکار را انجام می دهد.
* امکان از بین رفتن اطلاعات نیست(Data Loosing).
* به این تبدیل, تبدیل گسترش(Widening Conversion) هم می گویند, چون شیء مقصد دقت بالاتری نسبت به شیء مبداء دارد.
2. تبدیل صریح(Explicit Casting) : در این تبدیل, شیء مقصد دقت کمتری نسبت به شیء مبداء دارد. برنامه نویس باید به صورت صریح (Explicit) (آشکارا) نوع تبدیل را مشخص کند :
* این تبدیل, یک تبدیل امن نمی باشد(Unsafe Casting).
* امکان از بین رفتن دیتا زیاد است(Data Loosing).
* در صورت مشخص نکردن نوع تبدیل, کامپایلر خطا می دهد.
* به این تبدیل, تبدیل کاهشی هم می گویند(Narrowing Conversion).
- Primitive Data Type ها مقادیر پایه را نگهداری می کنند مانند: int, char, float, short, byte, Boolean, Double, long .
- Reference/Object Data Type ها آدرس ارجاع به Object ها(اشاره گر به یک شیء که در حقیقت همان آدرس آن متغیر(شیء) در RAM است) را نگهداری میکنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.