اعداد اعشاری یا همان اعداد حقیقی برای ارزش گذاری عبارتهایی كه نیازمند
دقت بیشتری هستند ، استفاده می شوند . بعنوان نمونه ، محاسباتی نظیر ریشه دوم
و محاسبات مثلثاتی نظیر سینوس و كسینوس منجربه جوابهایی می شوند كه برای تعیین
دقت آن نیاز به نوع عدد اعشاری می باشد . جاوا یك مجموعه استاندارد (IEEE-754)
از انواع عدد اعشاری و عملگرها را پیاده سازی می كند. دو نوع عدد اعشاری تعریف
شده یعنی floatو doubleو هستند كه بترتیب معرف دقت معمولی و مضاعف می باشند .
پهنا و دامنه آنها را در زیر نشان داده ایم :
دامنه پهنا بر حسب تعداد بیت نام
double 64 1.7e-308 to 1.7e+308
float 32 3.4e-038 to 3.4e+038
هر یك از انواع اعشاری را متعاقبا" مورد بررسی قرار می دهیم .
float
این نوع مشخص كننده یك مقدار با دقت معمولی بوده كه از 32 بایت حافظه
استفاده می كند . دقت معمول روی بعضی پردازنده ها سریعتر بوده و نسبت به دقت
مضاعف نیمی از فضا را اشغال می كند ، اما هنگامیكه مقادیر خیلی بزرگ یا خیلی
كوچك باشند ، دقت خود را از دست میدهد . متغیرهای نوع float برای زمانی مناسب
هستند كه از یك عضو كسری استفاده می كنید اما نیازی به دقت خیلی زیاد ندارید .
بعنوان مثال ، نوع float برای معرفی دلار و سنت بسیار مناسب است . + float hightemp/ lowtemp;
double
دقت مضاعف كه با واژه كلیدی double معین می شود برای ذخیره كردن یك مقدار 64
بیت فضا را اشغال می كند . دقت مضاعف روی برخی پردازنده های جدید كه برای
محاسبات ریاضی با سرعت زیاد بهینه شده اند ، واقعا" سریعتر از دقت معمولی عمل
می كند . كلیه توابع مثلثاتی نظیر ()sin ، ()cos و ()sqrt مقادیر مضاعف را
برمی گردانند . هنگام اجرای محاسبات مكرر كه نیاز به حفظ دقت دارید و یا هنگام
كار با ارقام خیلی بزرگ double بهترین انتخاب است .
در زیر برنامه ای را مشاهده می كنید كه از double استفاده نمود تا محیط یك
دایره را محاسبه كند :
+ // Compute the area of a circle.
+ class Area {
+ public static void main(String args[] ){
+ double pi/ r/ a;
+
+ r = 10.8; // radius of circle
+ pi = 3.1416; // pi/ approximately
+ a = pi * r * r; // compute area
+
+ System.out.println("Area of circle is " + a);
+ }
+ }
كاراكترها
در جاوا از نوع داده char برای ذخیره كردن كاراكترها استفاده می شود . اما
برنامه نویسان Cو C++و آگاه باشند كه char در جاوا مشابه char در زبانهای C و C++
نیست . در زبانهای Cو C++و ، نوع char یك نوع عدد صحیح با پهنای 8 بیت
است . اما جاوا متفاوت عمل می كند . جاوا از كدهای جهانی (unicode) برای معرفی
كاراكترها استفاده می كند . كدهای جهانی یك مجموعه كاملا" جهانی از كاراكترها
هستند كه می توانند همه كاراكترها را معرفی نمایند . این مجموعه شامل دهها
مجموعه كوچك تر كاراكتری نظیر Latin، Greek،، Arabic،، Cyrillic،، Hebrew، Katakana
، Hangul، و امثال آن است .
برای این منظور ، 16 بیت مورد نیاز است . بنابراین char در جاوا یك نوع 16
بیتی است . دامنه charاز 0ز تا 65/536 می باشد . در نوع char مقدار منفی وجود
ندارد . مجموعه استاندارد كاراكترها موسوم به ASCII همچون گذشته دارای دامنه
از 0 تا 127 و مجموعه كاراكترهای 8 بیتی توسعه یافته موسوم به lso-Latin-1
دارای دامنه از 0 تا 255 می باشند .
چون در جاوا امكان نوشتن ریز برنامه ها برای كاربری جهانی وجود دارد ، بنظر
می رسد كه بهتر است جاوا از كدهای جهانی برای معرفی كاراكترها استفاده نماید .
البته بكار بردن كدهای جهانی درمورد زبانهایی نظیر انگلیسی ،آلمانی ،اسپانیایی
یا فرانسوی كه كاراكترهای آنها را می توان براحتی داخل 8 بیت جای داد ، تا حدی
سبب نزول كارآیی خواهد شد . اما این بهایی است كه برای رسیدن به قابلیت حمل
جهانی در برنامه ها باید پرداخت .
نكته : اطلاعات بیشتر درباره كدهای جهانی را در آدرسهای وب زیر پیدا خواهید
نمود : http://www .unicode .org
http://www .stonehand .com/unicode .html
در زیر برنامه ای را مشاهده می كنید كه متغیرهای char را نشان می دهد :
+ // Demonstrate char data type.
+ class CharDemo {
+ public static void main(String args[] ){
+ char ch1/ ch2;
+
+ ch1 = 88; // code for X
+ ch2 = 'Y';
+
+ System.out.print("ch1 and ch2 :");
+ System.out.println(ch1 + " " + ch2);
+ }
+ }
این برنامه خروجی زیر را نشان خواهد داد : ch1 and ch2 y
دقت كنید كه مقدار 88به ch1 نسبت داده شده ، كه مقدار متناظر با حرف x در
كد ASCII ( و كد جهانی ) است . قبلا" هم گفتیم كه مجموعه كاراكتری ASCII َ127
مقدار اولیه در مجموعه كاراكتری كدهای جهانی را اشغال كرده است . بهمین دلیل
كلیه فوت و فنهای قدیمی كه قبلا" با كاراكترها پیاده كرده اید ، در جاوا نیز به
خوبی جواب می دهند .
اگر چه انواع char عدد صحیح محسوب نمی شوند ، اما در بسیاری از شرایط
می توانید مشابه عدد صحیح با آنها رفتار كنید . بدین ترتیب قادرید دو كاراكتر
را با هم جمع نموده و یا اینكه مقدار یك متغیر كاركتری را كاهش دهید . بعنوان
مثال ، برنامه زیر را در نظر بگیرید :
+ // char variables behave like integers.
+ class CharDemo2 {
+ public static void main(String args[] ){
+ char ch1;
+
+ ch1 = 'X';
+ System.out.println("ch1 contains " + ch1);
+
+ ch1++; // increment ch1
+ System.out.println("ch1 is now " + ch1);
+ }
+ }
خروجی این برنامه بشرح زیر خواهد بود : ch1 contains x
ch1 is now y
در برنامه ابتدا مقدار xبه ch1 داده میشود . سپس ch1 افزایش می یابد . این
روال باعث می شود تا ch1 حرف y را اختیار كند، كه كاراكتر بعدی در ترتیب ASCII
( و كدهای جهانی ) می باشد .
Boolean
جاوا یك نوع ساده موسوم به boolean برای مقادیر منطقی دارد . این نوع فقط
یكی از مقادیر ممكن trueیا falseا را اختیار می كند . این نوعی است كه توسط
كلیه عملگرهای رابطه ای نظیر b شرطی كه دستورهای كنترلی نظیر ifو forو را مدیریت می كنند ، استفاده می شود .
در زیر برنامه ای مشاهده می كنید كه نوع boolean را نشان می دهد :
+ // Demonstrate boolean values.
+ class BoolTest {
+ public static void main(String args[] ){
+ boolean b;
+
+ b = false;
+ System.out.println("b is " + b);
+ b = true;
+ System.out.println("b is " + b);
+
+ // a boolean value can control the if statement
+ if(b )System.out.println("This is executed.");
+
+ b = false;
+ if(b )System.out.println("This is not executed.");
+
+ // outcome of a relational operator is a boolean value
+ System.out.println("10 > 9 is " +( 10 > 9));
+ }
+ }
خروجی برنامه فوق بقرار زیر خواهد بود :
b is false
b is true
This is executed.
10>9 is true
درباره این برنامه سه نكته جالب توجه وجود دارد . اول اینكه وقتی كه مقدار boolean
توسط ()println خارج می شود ، می بینید كه "true"یا "false"ا بنمایش
درمی آید . دوم اینكه یك متغیر boolean بتنهایی برای كنترل دستور if كفایت
می كند . دیگر نیازی به نوشتن یك دستور if بقرار زیر نخواهد بود : + if(b == true... )
یك مقدار <سوم اینكه ، پی آمد یك عملگر رابطه ای نظیر boolean است . بهمین
دلیل است كه عبارت 9>َ10 مقدار true را نمایش می دهد . علاوه بر این ، مجموعه ی از پرانتزهایی كه عبارت 9>َ10 را محصور كرده اند
*********************************سعید نستا**************************
تبلیغات 
