آموزش جامع برنامه نویسی جاوا به زبان ساده – بخش هشتم: رشتهها


در این بخش با رشتهها بیشتر آشنا میشویم و نحوه استفاده از عملگرها را نیز توضیح میدهیم. قبلاً در بخش ششم این سلسله آموزش جاوا، برخی از انواع متغیرها مانند String را معرفی کردهایم اما توضیح چندانی ارائه نکردهایم.
رشتهها
در زبان جاوا رشتهها اشیای درجه اول از نوع String محسوب میشوند و متدهایی دارند که امکان دستکاری آنها را ایجاد میکند.
در زبان C مدیریت رشته بسیار دشوار است زیرا رشتهها آرایههای 8 بیتی از کاراکترها با پایان null هستند که باید دستکاری شوند. نزدیکترین کد جاوا که شبیه رشته در C است نوع داده ابتدایی char است که میتواند یک کاراکتر منفرد یونیکد مثلاً a را در خود نگهداری کند.
در این بخش برخی از روشهای ایجاد رشته، با استفاده از نمونههایی که وهلههایی از رشته با نام greeting و مقدار Hello ایجاد میکند توضیح داده میشود.
greeting = new String("hello");
String greeting = "hello";
از آنجا که رشتهها اشیای درجه اول هستند میتوان از new برای ایجاد وهلههایی از آنها استفاده کرد. همچنین میتوان یک نوع متغیر string برای یک رشته تعریف کرد که نتیجه یکسانی ایجاد میکند چون زبان جاوا شیء string را برای نگهداری کلمات ایجاد میکند و سپس آن شیء را به متغیر وهله انتساب میدهد.
الحاق رشتهها
با رشتهها کارهای مختلفی میتوان انجام داد و این کلاس متدهای مفید زیادی دارد. حتی بدون استفاده از متد هم میتوان کارهای جالبی درون متد ()testPerson کلاس Person با الحاق یا ترکیب دو رشته انجام داد:
l.info("Name: " + p.getName());
علامت بعلاوه (+) اختصاری برای الحاق رشتهها در زبان جاوا محسوب میشود (البته این اختصار هزینه عملکردی نیز دارد چون تبدیل نوع درون یک حلقه رخ میدهد اما در حال حاضر نباید نگران این مسائل باشیم).
تمرین الحاق
اینک میتوان دو رشته را درون کلاس person به هم الحاق داد. در این نقطه یک متغیر وهله به نام name داریم اما در کاربردهای تجاری باید دقیقتر باشیم و مقادیر firstname و lastname نیز داشته باشیم. میتوان این دو مقدار را زمانی که شیء دیگری نام کامل Person را میخواهد به هم الحاق کرد.
به پروژه ایکلیپس باز میگردیم و متغیرهای وهلهای جدیدی ایجاد میکنیم (در همان نقطه از سورس کد که name در حال حاضر تعریفشده است.)
//private String name;
private String firstName;
private String lastName;
تعریف نام را با کامنت حذف کنید چون دیگر به آن نیازی نداریم زیرا مقادیر firstName و lastName را جایگزین کردیم.
تغییر دادن فراخوانیهای متد
اینک از تولیدکننده کد ایکلیپس میخواهیم که متدهای getter و setter را برای مقادیر firstName و lastName ایجاد کند. سپس متدهای ()setName و ()getName را حذف میکنیم و متد جدید ()getFullName را اضافه میکنیم که چنین است:
public String getFullName() {
return getFirstName().concat(" ").concat(getLastName());
}
این کد روش تغیر دادن فراخوانی متدها را نشان میدهد. تغییر دادن تکنیکی است که بهطور متداول در مورد اشیای غیر قابل تغییر مانند String استفاده میشود چون اصلاح یک شیء غیر قابلتغییر همواره نسخه اصلاحشدهای از آن را بازمیگرداند (ولی نسخه اصلی بدون تغییر باقی میماند). در این مورد بر روی مقدار تغییریافته بازگشتی کار میکنیم.
عملگرها
قبلاً دیدیم که زبان جاوا از عملگر = برای انتساب مقادیر به متغیرها استفاده میکند. همانطور که احتمالاً انتظار داریم زبان جاوا میتواند عملیات حسابی انجام دهد و میتواند از عملگرها به آن منظور نیز استفاده کند. اینک توضیح مختصری در مورد برخی از عملگرهای جاوا که برای بهبود مهارت موردنیاز هستند ارائه میدهیم.
زبان جاوا از دو نوع عملگر استفاده میکند:
- یگانه: تنها یک عملوند موردنیاز است.
- دودویی: دو عملوند لازم هستند.
جدول زیر عملگرهای حسابی زبان جاوا را نشان میدهد.
عملگر | استفاده | توضیح |
+ | a + b | a و b را جمع میکند. |
+ | +a | اگر a از نوع byte, short, یا char باشد آن را به int تبدیل میکند. |
- | a - b | b را از a کم میکند. |
- | -a | مقدار a را از نظر حسابی منفی میکند. |
* | a * b | a را در b ضرب میکند. |
/ | a / b | a را بر b تقسیم میکند. |
% | a% b | حاصل تقسیم a بر b را بازمی گراند (عملگر باقیمانده) |
++ | a++ | مقدار a را 1 واحد افزایش میدهد؛ پیش از افزایش مقدار a را محاسبه میکند. |
++ | ++a | مقدار a را 1 واحد افزایش میدهد؛ پس از افزایش مقدار a را محاسبه میکند. |
-- | a-- | مقدار a را 1 واحد کاهش میدهد؛ پیش از کاهش مقدار a را محاسبه میکند. |
-- | --a | مقدار a را 1 واحد کاهش میدهد؛ پس از کاهش مقدار a را محاسبه میکند. |
+= | a += b | حالت اختصاری برای a = a + b |
-= | a -= b | حالت اختصاری برای a = a - b |
*= | a *= b | حالت اختصاری برای a = a * b |
%= | a%= b | حالت اختصاری برای a = a% b |
عملگرهای دیگر جاوا
علاوه بر عملگرهای جدول 2 چند نماد دیگر نیز وجود دارند که در زبان جاوا عملگر نامیده میشوند:
- نقطه (.) که نام پکیجها و روشهای فراخوانی را تعیین میکند.
- پرانتز (()) که یک فهرست از پارامترها که با کاما از هم جدا شدهاند را به یک متد ارسال میکند.
- واژه new که (وقتی در ادامه نام سازنده بیاید) وهلهای از یک شیء را میسازد.
در دستور زبان جاوا چند عملگر هم وجود دارند که بهطور خاص برای برنامهنویسی شرطی استفاده میشوند یعنی برنامههایی که بر اساس ورودیهای مختلف پاسخهای متفاوتی بازمیگردانند. در بخش نهم آنها را بررسی میکنیم.