آموزش جاوا - integers ( اعداد
صحيح )
جاوا
چهار نوع عدد صحيح تعريف مي كند : byte، short،، int،، long، . كليه اين اعداد داراي علامات مثبت و
منفي هستند . جاوا از اعداد صحيح غير علامت دار و فقط مثبت پشتيباني نمي كند .
بسياري از زبانهاي برنامه نويسي شامل Cو C++و هم از اعداد صحيح علامت دار و هم از
اعداد صحيح فاقد علامت پشتيباني مي كنند . اما طراحان جاوا احساس مي كردند كه
اعداد صحيح فاقد علامت غير ضروري است . بويژه آنها احساس كردند كه مفهوم فاقد
علامت (unsigned) بيشتر براي مشخص كردن رفتار بيت بالاتر از حد مجاز (high-order bit) استفاده مي شود كه علامت يك int را هنگاميكه بعنوان يك رقم عنوان مي شود ، مشخص مي كند .
بعدا" خواهيد ديد كه جاوا مفهوم بيت بالاتر از حد مجاز (high-order bit) را بگونه اي متفاوت مديريت مي كند ، يعني با اضافه كردن يك عملگر
ويژه حركت به راست فاقد علامت unsigned) (right shift . بدين ترتيب نياز به يك نوع عدد صحيح فاقد علامت منتفي شده است .
پهناي (widit) يك نوع عدد
صحيح را نبايد با ميزان حافظه اي كه مصرف مي كند اشتباه گرفت ، بلكه نشانه رفتاري
است كه براي متغيرها و عبارات آن نوع تعريف مي شود . محيط حين اجراي جاوا از هر
اندازه اي كه نياز داشته باشد ، استفاده مي كند ، البته تا آن اندازه اي كه انواع
براساس اعلام قبلي شما رفتار كنند . در
حقيقت ، حداقل يك پياده سازي byte وجود دارد كه
، short را بعنوان مقادير 32 بيتي ذخيره مي كند تا عملكرد را توسعه دهد.
زيرا آنچه درحال حاضر مورد استفاده قرار مي گيرد ، اندازه كلمه (word size) اكثر كامپيوترهاست . پهنا و دامنه اين انواع اعداد صحيح
همانطوريكه در جدول زيرمشاهده مي كنيد طيف وسيعي دارند : دامنه پهنا نام long 64- 9/ 223/ 372/ 036/
845/ 775/ 808 to 9/ 223/ 372/036/
854/ 775/ 807int 32- 2/ 147/ 483/ 648 to 2/
147/ 483/ 647short
16- 32/ 768 to 32/ 767byte 8- 128 to 127
اكنون نگاه دقيقتري به هر يك از انواع عدد صحيح خواهيم داشت .
byte
كوچكترين
نوع عدد صحيح byte است . اين يك نوع علامت دار 8 بيتي است كه دامنه آن از 128- تا
127 مي باشد . متغيرهاي نوع byte بويژه
هنگاميكه با يك جريان داده از يك شبكه يا يك فايل كار ميكنيد ، سودمند خواهند بود
. همچنين هنگاميكه با داده دودويي ( باينري ) خام مشغول كار هستيد كه ممكن است
بطور مستقيم با ساير انواع توكار جاوا سازگاري نداشته باشند ، بسيار سودمند هستند
. متغيرهاي byte را با استفاده از واژه كليدي byte
اعلام مي كنيم . بعنوان مثال ، در زير دو متغير byte با
اسامي bو cو را اعلام كرده ايم : + byte b/ c;
short
يك نوع 16 بيتي علامت داراست . دامنه آن از 768 32/- تا 767 32/ است . 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 بيتي علامت دار است كه دامنه آن از 2/147/483/648- تا
2/147/483/647 گسترده است . علاوه بر كاربردهاي ديگر متغيرهاي از نوع 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.
بازگشت به فهرست
بازگشت به صفحه نخست