در آموزش قبل با برخی از دیتا تایپهای به اصطلاح Primitive Type آشنا شدیم و در این آموزش قصد داریم تا با مجموعۀ دیتا تایپهای دیگری از نوع Reference Type آشنا شده و یکی از پرکاربردترین آنها به نام String را معرفی کرده و در ادامه به تشریح کاربردهای این نوع داده در قالب چند مثال کاربردی بپردازیم.
به طور کلی، دیتا تایپ String به منظور نگهداری و ذخیرهسازی مقادیر دادهای متشکل از کاراکترها، کلمات، عبارات، جملات، اعداد، علائم و غیره مورد استفاده قرار میگیرد که با کنار هم قرار دادن آنها میتوان جملهای را تشکیل داد و از همین روی چنانچه نیاز به استفاده از جملهای در برنامه داشته باشیم، با بهکارگیری نوع دادۀ String میتوانیم متغیری تعریف کرده و دیتای مورد نظر را در آن ذخیره کنیم (توجه داشته باشیم که این نوع داده بر خلاف سایر دیتا تایپها با حرف بزرگ شروع میشود.)
در حقیقت، انواع دادۀ به اصطلاح Reference Type متفاوت از هشت دیتا تایپ Primitive Type بوده و از جنس کلاسی از پیش تعریفشده در زبان برنامهنویسی جاوا میباشند که به منظور تعریف متغیر با استفاده از آنها میباید نمونهای از روی کلاس مد نظر ساخته و مقادیر دادهای را بدان اختصاص داد. حال جهت تعریف متغیر با بهکارگیری این دیتا تایپ نیاز است تا نمونهای از روی کلاس String ایجاد کرده و استرینگ مربوطه را به آن منتسب کرد به طوری که به طور مثال داریم:
String myString = "My Name Is Behzad";
در دستور فوق، آبجکتی تحت عنوان myString از روی کلاس از پیش تعریفشدۀ String ایجاد کرده و استرینگ «My Name Is Behzad» را داخل علائم " " بدان اختصاص دادهایم (در آموزشهای آتی به تفصیل مفاهیم کلاس، آبجکت و ساخت نمونه از روی یک کلاس را تشریح خواهیم کرد.)
یکی از ابتداییترین راهکارها به منظور نمایش دادن جملهای در زبان برنامهنویسی جاوا، استفاده از دستور زیر میباشد که در آموزشهای گذشته به بررسی ساختار و نحوۀ عملکرد آن پرداختیم:
System.out.println();
اکنون جهت نمایش استرینگ «My Name Is Behzad» در کنسول، کدی مانند زیر خواهیم داشت:
public class Test {
public static void main(String[] args) {
String myString = "My Name Is Behzad";
System.out.println(myString);
}
}
در نتیجۀ اجرای کد فوق، استرینگ منتسب به متغیر myString به صورت زیر در کنسول نمایش داده میشود:
My Name Is Behzadنکتۀ قابلتوجه در رابطه با استرینگ فوق این است که علائم " " به همراه استرینگ مذکور در کنسول نمایش داده نمیشوند. به علاوه، چنانچه بخواهیم از طولانی شدن سورسکد جلوگیری کنیم، به جای تعریف آبجکتی از جنس String و در ادامه اختصاص مقدار استرینگ مد نظر به آن سپس پاس دادن آبجکت مذکور به متد ()println به راحتی میتوانیم استرینگ مورد نظر خود را به عنوان آرگومان ورودی به متد ()println پاس دهیم. به عبارت دیگر، کد فوق را میتوانیم به شکل زیر تغییر دهیم:
public class Test {
public static void main(String[] args) {
System.out.println("My Name Is Behzad");
}
}
خروجی حاصل از اجرای هر دو کد یکسان میباشد. همچنین نکتۀ حائز اهمیت در رابطه با متد ()println این است که با بهکارگیری متد مذکور میتوان دو یا چند استرینگ دلخواه را در کنسول به نمایش در آورد که برای درک بهتر این موضوع کد زیر را مد نظر قرار میدهیم:
public class Test {
public static void main(String[] args) {
System.out.println("My Name Is Behzad");
System.out.println("My Last Name is Moradi");
}
}
در این مثال، هر دو استرینگ مربوطه داخل علائم " " قرار گرفته و به عنوان آرگومان ورودی به متد ()println داده شدهاند که در نتیجۀ اجرای این کد خواهیم داشت:
My Name Is Behzad
My Last Name is Moradiدر واقع، اجرای دستورات فوق منجر به چاپ استرینگهای مربوطه در دو سطر جداگانه شدهاند که این موضوع بیانگر تفاوت متدهای ()println و ()print میباشد به طوری که متد ()println به منظور نمایش استرینگها در دو سطر جدا به کار گرفته میشود در حالی که متد ()print استرینگ مد نظر را به صورت پشت سر هم و در یک خط چاپ میکند که برای روشن شدن وجه تمایز دو متد، مثال قبل را به صورت زیر با بهکارگیری متد ()print بازنویسی میکنیم:
public class Test {
public static void main(String[] args) {
System.out.print("My Name Is Behzad ");
System.out.print("My Last Name is Moradi");
}
}
در نتیجۀ اجرای کد فوق، استرینگهای مربوطه به صورت زیر در کنسول نمایش داده میشوند:
My Name Is Behzad My Last Name is Moradiهمانطور که میبینیم، استفاده از متد ()print منجر به چاپ دو استرینگ به صورت پشت سر هم شده است و علائم " " نیز به همراه استرینگهای مربوطه در کنسول نمایش داده نمیشوند اما در برخی شرایط نیاز به استفاده از علائم دابلکوتیشن جهت تأکید روی واژهای خاص در استرینگ مد نظر داریم که برای این منظور میتوانیم کلمۀ مورد نظر را داخل علائمی به صورت "\ "\ قرار دهیم. برای مثال، در کد زیر قصد داریم تا واژهٔ «Java» را داخل علائم مذکور در کنسول نمایش دهیم:
public class Test {
public static void main(String[] args) {
System.out.print("I like the \"Java\" Programming Language");
}
}
در واقع، در کد فوق استرینگی به صورت «I like the "Java" Programming Language» با تأکید روی واژۀ «Java» تعریف کردهایم که برای این منظور نیز واژۀ مورد نظر را داخل علائم "\ "\ از استرینگ مربوطه قرار دادهایم که خروجی حاصل از اجرای کد فوق به صورت زیر خواهد بود:
I like the "Java" Programming Languageهمانطور که انتظار داشتیم، واژۀ «Java» داخل دابلکوتیشن قرار گرفته و به همراه استرینگ مربوطه در کنسول نمایش داده میشود. همچنین میتوان از علائم دیگری نظیر t\ و n\ پس از واژۀ مورد نظر استفاده کرد و نحوۀ کار آنها نیز بدین صورت است که با قرار دادن هر یک از علائم مذکور پس از واژۀ مد نظر، به ترتیب یک تَب و یک سطر فاصله پس از آن در استرینگ متناظر ایجاد شده و در کنسول نمایش داده میشوند. به عنوان مثال، اگر بخواهیم دو کلمۀ «Programming Language» را در سطر بعد چاپ نماییم، از دستور زیر استفاده خواهیم کرد:
public class Test {
public static void main(String[] args) {
System.out.print("I like the \"Java\" \nProgramming Language");
}
}
در نتیجۀ اجرای کد فوق، استرینگی به صورت زیر و در دو سطر جداگانه در کنسول چاپ میشود:
I like the "Java"
Programming Languageهمانطور که انتظار داشتیم، قرار دادن علائم n\ پس از کلمۀ «Programming» منجر به چاپ ادامهٔ استرینگها پس از آن در سطر بعدی شده است.
آشنایی با نحوهٔ کانکت کردن استرینگها در زبان جاوا
واژۀ Concatenation در زبان برنامهنویسی جاوا به مفهومی اطلاق میگردد که در آن دو یا چند مقدار به یکدیگر الحاق شده و یک مقدار واحد را تشکیل میدهند. به طور مثال، در برخی موارد نیاز داریم تا یک عبارت بسیار طولانی را در کنسول به نمایش در آوریم که در این صورت میتوانیم از اپراتور + استفاده کرده و استرینگ مد نظر را با کانکت کردن دو یا چند استرینگ کوتاهتر در کنسول چاپ کنیم (در آموزشهای آتی به طور مفصل پیرامون اپراتورها صحبت خواهیم کرد.) برای روشن شدن این مطلب، مثال زیر را مد نظر قرار میدهیم:
public class Test {
public static void main(String[] args) {
System.out.print("I like the \"Java\" Programming Language." +
"This language is used to create android apps.");
}
}
همانطور که مشاهده میشود، هر یک از دو استرینگ کوتاهتر را داخل علائم " " قرار داده و با استفاده از عملگر + با یکدیگر کانکت کردهایم که در نهایت استرینگی متشکل از دو استرینگ فوقالذکر در کنسول چاپ میشود (لازم به ذکر است که اِعمال عملگر + روی دادههایی از جنس int منجر به جمع شدن مقادیر عددی میشود اما در مورد مقادیر استرینگ، اپراتور + هر یک از آنها را با سایر استرینگها کانکت میکند.)
به علاوه، در برخی موارد نیاز است تا مقادیری از نوع دادۀ استریگ را در کنار سایر مقادیر با دیتا تایپهای مختلفی نظیر int یا double در محیط کنسول نمایش دهیم که برای آشنایی با نحوۀ انجام چنین کاری مثال زیر را در نظر میگیریم:
public class Test {
public static void main(String[] args) {
int studentNumber = 12;
int teacherNumber = 3;
System.out.println("The number of students is " + studentNumber);
System.out.println("The number of teachers is " + teacherNumber);
}
}
در مثال فوق، با بهکارگیری نوع دادۀ int دو متغیر تحت عناوین studentNumber و teacherNumber تعریف کرده و به ترتیب مقادیر عددیِ 12 و 3 را به آنها اختصاص دادهایم. در ادامه، قصد داریم تا هر یک از اعداد مذکور را با استرینگی کانکت کرده و در کنسول نمایش دهیم که برای این منظور لازم است تا پس از علامت " در انتهای استرینگ مد نظر عملگر + را قرار داده سپس نام متغیر مربوطه را بنویسیم.
در چنین شرایطی، با اجرای کد فوق هر یک از اعداد تعریفشده به همراه استرینگهای متناظرشان در محیط کنسول نمایش داده میشوند بدین معنی که عملگر + قابلیت الحاق مقداری از نوع دادۀ int به مقداری از جنس String را دارا است و بدین ترتیب خروجی حاصل از اجرای کد فوق به صورت زیر خواهد بود:
The number of students is 12
The number of teachers is 3همانطور که میبینیم، هر یک از اعداد منتسب به متغیرهای studentNumber و teacherNumber با استرینگهای متناظرشان کانکت شده و در کنسول نمایش داده میشوند.
