آموزش اعداد صحیح در جاوا

آموزش اعداد صحیح در جاوا

جاوا چهار نوع عدد صحيح تعريف مي كند : byte ، short ، int ، long. كليه اين اعداد داراي علامات مثبت و منفي هستند. جاوا از اعداد صحيح غير علامت دار و فقط مثبت پشتيباني نمي كند. بسياري از زبان‌هاي برنامه نويسي مانند C و ++C هم از اعداد صحيح علامت دار و هم از اعداد صحيح فاقد علامت پشتيباني مي كنند اما طراحان جاوا احساس مي كردند كه اعداد صحيح فاقد علامت غير ضروري است. بويژه آنها احساس كردند كه مفهوم فاقد علامت (unsigned) بيشتر براي مشخص كردن رفتار بيت بالاتر از حد مجاز (high-order bit) استفاده مي شود كه علامت يك int را هنگامي كه بعنوان يك رقم عنوان مي شود، مشخص مي كند. بعداً خواهيد ديد كه جاوا مفهوم بيت بالاتر از حد مجاز (high-order bit) را بگونه‌اي متفاوت مديريت مي كند، يعني با اضافه كردن يك عملگر ويژه حركت به راست فاقد علامت (unsigned right shift). بدين ترتيب نياز به يك نوع عدد صحيح فاقد علامت منتفي شده است.

پهناي (width) يك نوع عدد صحيح را نبايد با ميزان حافظه اي كه مصرف مي كند اشتباه گرفت، بلكه نشانه رفتاري است كه براي متغيرها و عبارات آن نوع تعريف مي‌شود. محيط حين اجراي جاوا از هر اندازه‌اي كه نياز داشته باشد، استفاده مي‌كند ، البته تا آن اندازه اي كه انواع براساس اعلام قبلي شما رفتار كنند. در حقيقت، حداقل يك پياده سازي byte وجود دارد كه short را بعنوان مقادير 32 بيتي ذخيره مي كند تا عملكرد را توسعه دهد زيرا آنچه درحال حاضر مورد استفاده قرار مي گيرد، اندازه كلمه (word size) اكثر كامپيوترهاست.

پهنا و دامنه اين انواع اعداد صحيح همانطور كه در جدول زير مشاهده مي كنيد طيف وسيعي دارند :

پهنا و دامنه اعداد صحيح

long 64- 9/ 223/ 372/ 036/ 845/ 775/ 808 to 9/ 223/ 372
int 32- 2/ 147/ 483/ 648 to 2/ 147/ 483/ 647
short 16- 32/ 768 to 32/ 767
byte 8- 128 to 127

اكنون نگاه دقيق تري به هر يك از انواع عدد صحيح خواهيم داشت :

byte

كوچكترين نوع عدد صحيح byte است. اين يك نوع علامت دار 8 بيتي است كه دامنه آن از 128- تا 127 مي باشد . متغيرهاي نوع byte بويژه هنگامي كه با يك جريان داده از يك شبكه يا يك فايل كار مي‌كنيد، سودمند خواهند بود. همچنين هنگامي كه با داده دودويي (باينري) خام مشغول كار هستيد كه ممكن است بطور مستقيم با ساير انواع توكار جاوا سازگاري نداشته باشند، بسيار سودمند هستند. متغيرهاي byte را با استفاده از واژه كليدي byte اعلام مي كنيم.

در زير دو متغير byte با اسامي b و c و را تعریف كرده ايم

byte b, c;

short

يك نوع 16 بيتي علامت دار است. دامنه آن از 32768- تا 32767 است. short در اصل كم استفاده ترين نوع در جاوا مي باشد، چون طوري تعريف شده كه بايت بالاي آن اول مي آيد (آن را big-endian format مي‌گويند). اين نوع براي كامپيوترهاي 16بيتي كه به سرعت از رده خارج شده اند ، كاربري دارد.

در زير چگونگي اعلان متغيرهاي short را مشاهده مي كنيد

short s;
short t;

نکته

Endiannes توصيف كننده چگونگي ذخيره شدن انواع داده چند بايتي short و int و long در حافظه است. اگر 2 بايت براي معرفي يك نوع short استفاده شود، آن بايتي كه ابتدا قرار مي‌گيرد مي‌گويد كه يك ماشين big-endian است، بدان معني كه مهمترين بايت اول آمده و بعد از آن بايت كم اهميت تر قرار دارد. ماشينهايي نظير SPARC و power pc از نوع big-endian و ماشين‌هاي سري lntelx86 نوع little-endian هستند.

int

رايجترين نوع عدد صحيح int است. اين يك نوع 32 بيتي علامت دار است كه دامنه آن از 2147483648- تا 2147483647 گسترده است. علاوه بر كاربردهاي ديگر متغيرهاي از نوع int براي كنترل حلقه ها و نمايه سازي آرايه ها مورد استفاده قرار مي گيرند . هر بار كه يك عبارت عدد صحيح شامل byte ، short و int و ارقام لفظي (literal) داشته باشيد، كل عبارت قبل از انجام محاسبات به int ارتقا مي يابد. نوع int روان ترين و كاراترين نوع است و اكثر اوقات هنگامي كه مي‌خواهيد رقمي را براي شمارش يا نمايه سازي آرايه ها يا انجام محاسبات عدد صحيح بوجود آوريد بايد از آن استفاده نماييد. شايد بنظر آيد كه استفاده از انواع short و byte سبب صرفه جويي در فضا شود، اما هيچ تضميني وجود ندارد كه جاوا اين انواع را به طرق داخلي به int ارتقا ندهد. همواره بياد داشته باشيد كه نوع مشخص كننده رفتار است نه اندازه. (تنها استثنا در اين مورد، آرايه است كه در آنجا byte بصورت تضميني براي هر عضو آرايه فقط يك بايت، short دو بايت و int از چهار بايت استفاده مي كند)

long

يك نوع 64 بيتي علامت دار است و براي مواردي مفيد است كه يك نوع int طول كافي براي دربرگرفتن مقدار مورد نظر نداشته باشد. دامنه long كاملاً وسيع است. اين نوع ، براي كار با اعداد خيلي بزرگ مناسب است.

برنامه محاسبه‌ی مسافت طي شده توسط نور در تعداد روز مشخص بر حسب مايل

// Compute distance light travels using long variables.
class Light {
public static void main(String args[] ){
int lightspeed;
long days;
long seconds;
long distance;
// approximate speed of light in miles per second
lightspeed = 86000;
days = 1000; // specify number of days here
seconds = days * 24 * 60 * 60; // convert to seconds
distance = lightspeed * seconds; // compute distance
System.out.print("In " + days);
System.out.print(" days light will travel about ");
System.out.println(distance + " miles .");
}
}

خروجي اين برنامه به این صورت خواهد بود : ln 1000 days light will travel about 4730400000000 miles



نظرات کاربران



عبارت امنیتی : حاصل 2 × 7 می شود :
متن پیام :