( تعداد نمایش : 1957 )

آموزش جاوا – integers ( اعداد صحیح )

جاوا چهار نوع عدد صحیح تعریف می کند : byte، short،، int،، long، . کلیه
این اعداد دارای علامات مثبت و منفی هستند . جاوا از اعداد صحیح غیر علامت دار و
فقط مثبت پشتیبانی نمی کند . بسیاری از زبانهای برنامه نویسی شامل Cو C++و هم
از اعداد صحیح علامت دار و هم از اعداد صحیح فاقد علامت پشتیبانی می کنند . اما
طراحان جاوا احساس می کردند که اعداد صحیح فاقد علامت غیر ضروری است . بویژه
آنها احساس کردند که مفهوم فاقد علامت (unsigned) بیشتر برای مشخص کردن رفتار
بیت بالاتر از حد مجاز (high-order bit) استفاده می شود که علامت یک int را
هنگامیکه بعنوان یک رقم عنوان می شود ، مشخص می کند . بعدا” خواهید دید که
جاوا مفهوم بیت بالاتر از حد مجاز (high-order bit) را بگونه ای متفاوت مدیریت
می کند ، یعنی با اضافه کردن یک عملگر ویژه حرکت به راست فاقد علامت unsigned)
(right shift . بدین ترتیب نیاز به یک نوع عدد صحیح فاقد علامت منتفی شده است .
پهنای (widit) یک نوع عدد صحیح را نباید با میزان حافظه ای که مصرف می کند
اشتباه گرفت ، بلکه نشانه رفتاری است که برای متغیرها و عبارات آن نوع تعریف
می شود . محیط حین اجرای جاوا از هر اندازه ای که نیاز داشته باشد ، استفاده
می کند ، البته تا آن اندازه ای که انواع براساس اعلام قبلی شما رفتار کنند . در
حقیقت ، حداقل یک پیاده سازی byte وجود دارد که ، short را بعنوان مقادیر ۳۲
بیتی ذخیره می کند تا عملکرد را توسعه دهد. زیرا آنچه درحال حاضر مورد استفاده
قرار می گیرد ، اندازه کلمه (word size) اکثر کامپیوترهاست .
پهنا و دامنه این انواع اعداد صحیح همانطوریکه در جدول زیر مشاهده می کنید
طیف وسیعی دارند :
دامنه پهنا نام
long 64- 9/ 223/ 372/ 036/ 845/ 775/ 808 to 9/ 223/ 372
/036/ 854/ 775/ 807
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 است . این یک نوع علامت دار ۸ بیتی است که دامنه
آن از ۱۲۸- تا ۱۲۷ می باشد . متغیرهای نوع byte بویژه هنگامیکه با یک جریان
داده از یک شبکه یا یک فایل کار میکنید ، سودمند خواهند بود . همچنین هنگامیکه
با داده دودویی ( باینری ) خام مشغول کار هستید که ممکن است بطور مستقیم با
سایر انواع توکار جاوا سازگاری نداشته باشند ، بسیار سودمند هستند .
متغیرهای byte را با استفاده از واژه کلیدی byte اعلام می کنیم . بعنوان
مثال ، در زیر دو متغیر byte با اسامی bو cو را اعلام کرده ایم : + byte b/ c;

short

یک نوع ۱۶ بیتی علامت داراست . دامنه آن از ۷۶۸ ۳۲/- تا ۷۶۷ ۳۲/ است . short
در اصل کم استفاده ترین نوع در جاوا می باشد ، چون طوری تعریف شده که بایت بالای
آن اول می آید ( آن را big-endian format میگویند ). این نوع برای کامپیوترهای ۱۶
بیتی که بسرعت از رده خارج شده اند ، کاربری دارد .
در زیر مثالهایی از چگونگی اعلان متغیرهای short را مشاهده می کنید : + short s;
+ short t;

نکته : Endiannes توصیف کننده چگونگی ذخیره شدن انواع داده چند بایتی short int
و longو در حافظه است . اگر ۲ بایت برای معرفی یک نوع short استفاده
شود ، آن بایتی که ابتدا قرار می گیرد ( مهمترین یا کم اهمیت ترین ? )
می گوید که یک ماشین big-endian است ، بدان معنی که مهمترین بایت اول
آمده و بعد از آن بایت کم اهمیت تر قرار دارد . ماشینهایی نظیر SPARC و power pc
از نوع big-endian و ماشینهای سری lntelx86نوع little-endianع
هستند .
int

رایجترین نوع عدد صحیح int است . این یک نوع ۳۲ بیتی علامت دار است که دامنه
آن از ۲/۱۴۷/۴۸۳/۶۴۸- تا ۲/۱۴۷/۴۸۳/۶۴۷ گسترده است . علاوه بر کاربردهای دیگر
متغیرهای از نوع int برای کنترل حلقه ها و نمایه سازی آرایه ها مورد استفاده قرار
می گیرند . هر بار که یک عبارت عدد صحیح شامل byte، short،و intو و ارقام لفظی
(literal) داشته باشید، کل عبارت قبل از انجام محاسبات به int ارتقائ می یابد.
نوع int روان ترین و کاراترین نوع است و اکثر اوقات هنگامیکه میخواهید رقمی
را برای شمارش یا نمایه سازی آرایه ها یا انجام محاسبات عدد صحیح بوجود آورید
باید از آن استفاده نمایید . شاید بنظر آید که استفاده از انواع shortو byteو
سبب صرفه جویی در فضا شود ، اما هیچ تضمینی وجود ندارد که جاوا این انواع را
بطرق داخلی به int ارتقائ ندهد . همواره بیاد داشته باشید که نوع ، مشخص کننده
رفتار است نه اندازه . ( تنها استثنائ در این مورد، آرایه است که در آنجا byte
بصورت تضمینی برای هر عضو آرایه فقط یک بایت ، short دو بایت و int از چهار
بایت استفاده می کند . )
long

یک نوع ۶۴ بیتی علامت دار است و برای مواردی مفید است که یک نوع 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.

دیدگاه خود را بیان کنید.

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