Skip to main content

اعلان و مقداردهی اولیه مقادیر اولیه عددی

Declaring and initializing numeric primitives

در این درس دانش‌پژوهان با انواع نوع داده‌های اولیه جاوا در قالب مثال عملی آشنایی کامل پیدا کرده و نحوه تعریف و اعلان و نمایش نتایج آنها را فرا میگیرند.

لینک کمکی (official link) – آموزش نحوه کار با numeric primitives یا نوع داده اولیه در جاوا

نوع داده‌های اولیه عددی در جاوا

در این بخش از آموزش برنامه نویسی جاوا میخواهم شما را با انواع نوع داده‌های اولیه عددی و در اصلاح با numeric primitives و طریقه تعریف و اعلان آنها و همینطور نمایش مقادیر آنها در خروجی آشنا کنم. همچنین توضیح خواهم داد که در صورتی که مقداری که یک نوع داده میگیرد از رِنج و محدوده مجاز آن نوع داده تجاوز کند چه اتفاقی در خروجی می‌افتد.
شما میتوانید اعداد را در جاوا هم به صورت مقادیری از جنس نوع داده‌های اولیه و یا به صورت اشیاء پیچیده نشان بدهید. من اینجا به شما نشان میدهم که چطور میشود آنها را به صورت نوع داده‎های اولیه نشان داد و بعد هم نشانتان میدهم که چطوری میشود از کلاسهای کمکی برای به دست آوردن اطلاعات درباره مقادیر عددی استفاده کرد.
خب؛ من در حال کار روی پروژه‌ای با نام PrimitiveNumbers هستم.
که دو کلاس با نامهای Main و MaxValues دارد.
و هر دو این کلاسها یک متد Main دارند، ولی هنوز کد قابل اجرایی ندارند.

افزودن داده byte، short، int و long در کلاس Main

در کلاس Main، میخواهم کدی را در متد Main اضافه کنم. خب؛ می‌آیم و شش تا متغیر را اعلان میکنم که هر کدام آنها از جنس یکی از نوع داده‌های اولیه عددی باشند.
با یک بایت شروع میکنم، پس تایپ میکنم byte و نام آنرا b میگذارم و مقدار 1 را و برای آن تعیین میکنم.
و نهایتاً هم به خط جدید میروم.
بعد یک عدد صحیح از جنس short ایجاد میکنم.
به روال مشابه تایپ میکنم short؛ نام آنرا میگذارم sh و دوباره مقدار عددی یک را به آن میدهم.
بعد یک int یعنی یک عدد صحیح 32 بیتی را در خط جدید تایپ میکنم.
اسم آنرا میگذارم i و مقدارِ یک را برای آن تعیین میکنم.
و بعد یک عدد صحیح long یعنی همان نوع داده long.
مثل بقیه، مجدد نام آنرا میگذارم l و مقدار آنرا 1 تعریف میکنم.
توجه داشته باشید که مقدار همه این نوع داده‌های صحیح، عدد یک است.
در حقیقت کامپایلر می‌آید به این مقدار یک نگاه میکند و همیشه با این فرضیه کار خود را شروع میکند که آن متغیر کوچکترین رنجِ عددی و کوچکترین مقدار از حافظه یعنی یک بایت را اشغال میکند. ولی بعد وقتی نوع داده‌ای در قالب بزرگتری اعلان کنید.

تعریف کاراکتر آلفا و متغیرهای float و double

اگر بخواهید به طور صریحتر به متغیری مقدار بدهید، یعنی اگر خواستید بگویید که این عددی که تعیین میکنم یک است ولی این یک، یک عدد صحیح long است، باید یک کاراکتر آلفا بعد از عدد اضافه کنید.
مثلاً برای long، بهتر است که کاراکتر l باشد. به طور تکنیکی میتوانید از حرف کوچک l استفاده کنید، ولی حرف l کوچک به راحتی با عدد 1 اشتباه گرفته میشود.
و نوعاً، توسعه دهنده‌ها از حرف L بزرگ استفاده میکنند.
میتوانید دقیقاً مثل همین کار را با متغیرهای از جنس float و double هم انجام بدهید.
من یک متغیر از نوع float هم اینجا تعریف میکنم.
نام آنرا f میگذارم و مقدار آنرا هم 1f تعیین میکنم.
توجه داشته باشید که من در اینجا از f کوچک استفاده کردم، ولی شما میتوانید از F بزرگ هم استفاده کنید. ولی توسعه دهنده‌ها اکثراً از حروف کوچک برای float و double استفاده میکنند.
و من یک متغیر از نوع دابل هم تعریف میکنم با نام d و مقدار آنرا هم 1d میگذارم.

اجرا نتایج در خروجی console با دستور S out

حالا میخواهم این مقادیر را در خروجیِ console نمایش بدهم.
من از قالب کد S out استفاده میکنم و میخواهم یک مقدار از جنس بایت را در خروجی نمایش بدهم، و بعد مقدار b را به خروجی به این شکل اضافه میکنم.
و از این کد اجرا میگیرم. برای اینکار به منو میروم و از قسمت Run، دوباره Run را انتخاب میکنم، و پیکربندی ران جدید را برای کلاس main انتخاب میکنم.
و برای اینکار اینجا کلیک میکنم.
و در پنجره ران در پایین صفحه نمایش، میبینیم که عبارت Byte: 1 چاپ شده.
حالا میخواهم همین خط کد را چند بار تکرار کنم.
پس این خط را در کلیپبرد نرم افزار کپی میکنم و بعد پنج بار دیگر در خطهای زیری آن پاست میکنم و برچسب هرکدام از این خروجیها را به نوعهای داده‌ای که چند لحظه پیش در بالا اعلان کردم تغییر میدهم، یعنی به ترتیب برچسبهای short ، int ، long ، float و double را برای آنها تغییر میدهم و بعد هم مقادیری که قرار است نشان بدهند را متناسب با هر برچسب تغییر میدهم، یعنی بعد از بعلاوه به ترتیب متغیرهای sh ، i ، l ، f و d را میگذارم.
حالا چون قبلاً پیکربندی ران را ایجاد کردم، میتوانم فقط با کلیک روی دکمه ران در تولبار کد را اجرا کنم، و میبینیم که همه مقادیر از بایت تا دابل در خروجی چاپ میشوند. توجه داشته باشید که برای 4 نوع داده اول عدد صحیح تنها عدد 1 را میبینیم. ولی برای float و double یک دات زیرو هم علاوه بر یک؛ اضافه شده.
چرا که این دو مقدار در قالب متناسب با نوع داده آنها نمایش داده شدند. دوستان میدانید که دات زیرو نشان دهنده دقت و همینطور اعشاری بودن این نوع داده‌ها است.

نحوه استفاده از کلاسهای کمکی

حالا بیایید برویم نگاهی به نحوه استفاده از کلاسهای کمکی بیندازیم.
به کلاس MaxValues میروم و کدی را در متد Main آن اضافه میکنم.
یک متغیر از نوع بایت با نام b اعلان میکنم و اینبار مقدار آنرا میگذارم 127.
بعد این مقدار را به طریق مشابه با قالب کد S out در خروجی با عبارتByte: و اضافه کردن متغیر نمایش میدهم.
و از این کد اجرا میگیرم. پس دوباره به منو ران میروم و ران را انتخاب میکنم و اینبار یک پیکربندی جدید برای این کلاس ایجاد میکنم و از پنجره باز شده MaxValues را انتخاب میکنم و مقدار “بایت 127” را در خروجی میبینیم.

افزودن یک واحد به متغیر با دستور b++

بعد میتوانم مقدار این متغیر را با عبارت b++ یک دانه افزایش بدهم.
در جاوا میتوانید با استفاده از علامت ++ یک واحد به متغیر اضافه کنید، در حقیقت عبارت ++b برابر با همان عبارت b=b+1 است.
و بعد این خط کد مربوط به چاپ در خروجی را کپی و این پایین بعد از عبارت b++ پاست میکنم.
و یکبار دیگر از کد اجرا میگیرم.
توجه کنید ببینید چه اتفاقی افتاد.
127 مقدار ماکسیمم است که نوع داده بایت میتواند در خود جا بدهد که این را در ویدئو آموزشی قبلی به شما گفتم، و اگر ما سعی کنیم یک مقدار به آن اضافه کنیم، برمیگردد آنرا از اول نشان میدهد. و الان آمده کمترین مقدار این نوع داده یعنی 128- را نشون داده.

حل مشکل دستور b++ با دستور if

برای حل این مشکل، می‌آیم این قسمت از کد را به این شکل تغییر میدهم. خب؛ می‌آیم این کد مربوط به افزایش مقدار را در یک بلاک شرطی قرار میدهم.
از عبارت if استفاده میکنم. کلمه if را تایپ میکنم و بعد اینتر یا return را فشار میدهم و بعد if میگویم که b < Byte.MAX_VALUE.
پس با رفتن به خط جدید این بلاک کد را اضافه میکنم و این قسمت از کد را به این بلاک؛ کات و پاست میکنم. به این شکل.

دستور if در جاوا

میخواهم کمی این قسمت از کد را برای شما توضیح بدهم.
عبارت شرطی if خیلی واضح است.
if که کاربرد آن مشخص است و، در حقیقت دارد میپرسد، اگر این شرط برقرار بود یعنی اگر درست بود که بگو true است. ببینید ما اینجا یک عبارت بولین داخلِ پرانتز داریم. که این عبارت با متغیری به نام b شروع میشود، و بعد علامت کوچکتر و عبارت Byte.MAX_VALUE. به طوری که Byte با B بزرگ نوشته شده و در واقع مربوط میشود به کلاس کمکی نوع داده بایت و این کلاس یک مقدار ثابت یا یک فیلد استاتیک به نام MAX_VALUE دارد که همه حروف این فیلد هم بزرگ هستند و نشان دهنده بزرگترین مقداری است که این نوع داده میتواند در خود جای بدهد.
نگاه کنید ساختار یک عبارت شرطی به این صورت است که ابتدا ما کلمه if را تایپ میکنیم بعد داخل پرانتز عبارت شرطی یا همان عبارتی که قرار است بر اساس آن تصمیمی گرفته شود را وارد میکنیم. توجه داشته باشید عبارتی که داخل پرانتز است، مربوط به if میباشد، می‌آید یک مقدار بولین برمیگرداند و این مقدار میتواند false یا true باشد. خب؛ حالا اگر مقدار بازگشتی عبارت داخل پرانتز true باشد برنامه وارد کدهای داخل بلوک if میشود و آنها را اجرا میکند. ولی اگر مقدار false برگرداند، برنامه بلوک کدهای if را بیخیال میشود و از روی آنها پرش میکند و از ادامه برنامه شروع به اجرا میکند. دقت کنید که بلوک کدهای مربوط به if داخل یک جفت آکولاد نوشته میشوند.
پس من داخل پرانتز به آن میگویم فقط درصورتی یک واحد به متغیرb اضافه کند که مقدار b از MAX_VALUE بیشتر نباشد.

جمع بندی

پس من یکبار دیگر کد را اجرا میکنم و اینبار میبینیم که عبارت خروجی، برای این خط از کد، روی همان 127 مانده؛ چونکه برنامه وقتی به عبارت شرطی میرسد میبیند که مقدارb برابر با مقدار MAX_VALUE است و در نتیجه، نتیجه عبارت داخل پرانتز false میشود و برنامه وارد بلوک عبارت شرطی نمیشود و این خط را رد میکند و میرود سراغ اجرا خط بعد. شما میتوانید همین روند را برای همه نوع داده‌های عددی مختلف، دیگر هم امتحان کنید، و یک مقدار اولیه برای متغیری تعیین کنید، و بعد آن متغیر را نسبت به MAX_VALUE چک کنید و ببینید که از MAX_VALUE کوچکتر است یا نه، و اگر نبود بعد سعی کنید یک واحد به متغیر خود اضافه کنید.
یا مثلاً سعی کنید کدی بنویسید که بدون چک کردن هیچ شرطی بیاید و یک واحد به متغیر شما اضافه کند. شما همه این کدهای مختلف را میتوانید امتحان کنید و ببینید چه اتفاقی می‌افتد. اگر سعی کنید مقداری بیش از ماکسیمم مقداری که نوع داده شما میتواند داشته باشد به آن بدهید، برنامه همیشه به صورت خودکار برمیگردد و مینیمم مقدار را برای متغیر شما در نظر میگیرد و این قضیه برای همه نوع داده‌های اولیه صدق میکند.

نظرات (1)

دیدگاهتان را بنویسید

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

دوره ها
درس ها
طهاکو من
0