پیش از پرداختن به مباحث تکمیلی کلاس String
و معرفی برخی متدهای پرکاربرد آن در زبان برنامهنویسی جاوا، ابتدا قصد داریم تا یکی از خصوصیات کلیدی اکثر محیطهای برنامهنویسی همچون اکلیپس را مورد بررسی قرار دهیم. این خصیصه تحت عناوین مختلفی مانند Content Assist ،Code Completion ،Code Assist و Auto Completion شناخته میشود.
در واقع، این ویژگی در بسیاری از محیطهای برنامهنویسی به منظور کمک به برنامهنویسان و جهت افزایش دقت و سرعت ایشان در کدنویسی گنجانده شده است. حال چنانچه بخواهیم در حین کدنویسی از قابلیتهای محیط برنامهنویسی اکلیپس راهنمایی بگیریم، با فشردن همزمان کلیدهای Ctrl + Space میتوانیم کلمۀ مد نظر خود را به صورت خودکار تکمیل نموده و بدین وسیله از نوشتن کامل آن خودداری کنیم. برای مثال، با تایپ بخشی از نام متغیری که قبلاً آن را در برنامۀ خود ایجاد کردهایم، میتوانیم کلیدهای Ctrl + Space را فشار دهیم تا آیدیای اکلیپس نام متغیر مذکور را به صورت خودکار برایمان تکمیل کند. برای مثال، در کد زیر قصد داریم تا به بررسی ویژگی Auto Completion بپردازیم:
public class Test {
public static void main(String[] args) {
String myFistName;
}
}
همانطور که میبینید، در کد فوق آبجکتی تحت عنوان myFirstName
از روی کلاس String
ایجاد کردهایم که حاوی هیچ مقداری نیست. در سطر بعد قصد داریم تا مقداری را به متغیر مذکور اختصاص دهیم که برای این منظور میتوانیم واژۀ «my» از نام متغیر را تایپ کرده و کلیدهای Ctrl + Space را به صورت همزمان فشار دهیم که بدین ترتیب آیدیای اکلیپس نام متغیر را به صورت myFirstName
تکمیل مینماید.
به علاوه، ویژگی Auto Completion صرفاً به منظور تکمیل کردن نام متغیرها نبوده و به منظور کامل کردن سورسکد نیز مورد استفاده قرار میگیرد. در حقیقت، زبان برنامهنویسی جاوا متدها و کلاسهای از پیش تعریفشدۀ بسیاری دارا است که برنامهنویسان با استفاده از قابلیت تکمیل خودکار در محیطهای برنامهنویسی دیگر نیاز به حفظ نام آنها ندارند به طوری که با تایپ بخشی از نام متد یا کلاس مد نظر و فشردن همزمان کلیدهای Ctrl + Space میتوانند از میان پیشنهادات آیدیای مربوطه متد یا کلاس مورد نظر را انتخاب کرده و بدین ترتیب سورسکد خود را تکمیل نمایند.
حال با در نظر گرفتن این توضیحات، در ادامهٔ این آموزش قصد داریم تا برخی از متدهای از پیش تعریفشدهٔ کلاس String
را معرفی کنیم که بسته به نوع اپلیکیشنی که قصد داریم توسعه دهیم، میتوانند بسیار کاربردی باشند.
متد ()equals
در زبان برنامهنویسی جاوا میتوان از این متد به منظور مقایسۀ دو مقدار از جنس استرینگ استفاده کرد بدین صورت که یک مقدار استرینگ به عنوان آرگومان ورودی دریافت کرده و آن را با استرینگ مد نظر مقایسه میکند که در صورت یکسان بودن هر دو استرینگ مقدار true
و در غیر این صورت مقدار false
را در خروجی ریترن میکند که برای روشنتر شدن مطلب، مثال زیر را مد نظر قرار میدهیم:
public class Test {
public static void main(String[] args) {
String name = "Behzad";
String lastName = "Moradi";
System.out.println("My first name is " + name);
System.out.println("Is my last name Behzad? " + lastName.equals(name));
}
}
در مثال فوق، ابتدا دو آبجکت از روی کلاس String
تحت عناوین name
و lastName
تعریف کرده و به ترتیب استرینگهای «Behzad» و «Moradi» را به هر یک اختصاص دادهایم سپس در ادامه گفتهایم استرینگ «My first name is» با استرینگ منتسب به متغیر name
کانکت شده و در کنسول چاپ شود. در سطر بعد، قصد داریم تا مقادیر دو استرینگ منتسب به هر یک از متغیرهای name
و lastName
را با یکدیگر مقایسه کنیم که برای این منظور متد ()equals
را روی آبجکت lastName
فراخوانی کرده و آبجکت name
را به عنوان آرگومان ورودی به این متد پاس دادهایم.
حال چنانچه مقادیر استرینگهای منتسب به هر دو متغیر مذکور یکسان باشند، مقدار بولین true
و در صورت عدم تساوی آنها مقدار false
در خروجی ریترن میشود که گفتهایم نتیجۀ ریترنشده از متد مذکور با استرینگ «?Is my last name Behzad» کانکت شده و در خروجی چاپ شود که در نهایت خروجی حاصل از اجرای کد فوق به صورت زیر خواهد بود:
My first name is Behzad
Is my last name Behzad? false
در واقع، از آنجایی که مقادیر استرینگ منتسب به هر دو متغیر یکسان نمیباشند، متد ()equals
مقدار false
را در خروجی ریترن کرده است. برای ریترن شدن عبارت true
نیز میتوانیم مقادیر استرینگ دو متغیر را یکسان در نظر گرفته و مجدداً سورسکد را کامپایل کنیم. برای مثال، مقدار استرینگ منتسب به متغیر lastName
را به صورت زیر تغییر میدهیم:
public class Test {
public static void main(String[] args) {
String name = "Behzad";
String lastName = "Behzad";
System.out.println("My first name is " + name);
System.out.println("Is my last name Behzad? " + lastName.equals(name));
}
}
در نهایت، با اجرای کد فوق متد ()equals
مقدار دو استرینگ منتسب به متغیرهای name
و lastName
را با هم مقایسه میکند و از آنجایی که دو استرینگ مذکور مشابه میباشند، مقدار true
در خروجی ریترن شده و به همراه سایر استرینگهای مربوطه در کنسول چاپ میشود به طوری که داریم:
My first name is Behzad
Is my last name Behzad? true
همانطور که انتظار داشتیم، متد ()equals
مقادیر دو استرینگ مذکور را با یکدیگر مقایسه کرده و مقدار بولین true
را در خروجی ریترن کرده است.
متد ()length
این متد به منظور شمارش تعداد کاراکترهای استرینگ مربوطه مورد استفاده قرار میگیرد بدین صورت که استرینگ مورد نظر خود را به عنوان آرگومان ورودی به متد ()length
میدهیم و این متد تعداد کاراکترهای استرینگ مذکور در خروجی ریترن میکند. برای روشن شدن مطلب، مثال زیر را مد نظر قرار میدهیم:
public class Test {
public static void main(String[] args) {
String sentence = "This is a short sentence.";
System.out.println(sentence);
System.out.println("The number of its characters equals to " + sentence.length());
}
}
در مثال فوق، ابتدا آبجکتی به نام sentence
از روی کلاس String
ساخته و استرینگ «.This is a short sentence» را بدان منتسب کردهایم و در ادامه آن را به عنوان آرگومان ورودی به متد ()println
داده سپس متد از پیش تعریفشدۀ ()length
را روی آبجکت sentence
فراخوانی کردهایم که بدین ترتیب خروجی حاصل از آن به همراه استرینگ «The number of its characters equals to» در کنسول چاپ میشود (توجه داشته باشیم که متد ()length
حتی اسپیس، نقطه، کاما و غیره را نیز در استرینگ مربوطه شمارش کرده و تعداد کاراکترها را در خروجی ریترن میکند.) با اجرای کد فوق در خروجی خواهیم داشت:
This is a short sentence.
The number of its characters equals to 25
همانطور که میبینید، متد ()length
تعداد کاراکترهای استرینگ ورودی را برابر با عدد 25 ریترن کرده است در حالی که تعداد کاراکترها در جملۀ «.This is a short sentence» معادل عدد 20 میباشد چرا که متد ()length
نقطه و اسپیسهای استرینگ را نیز به عنوان کاراکتر میشمارد.
متدهای ()toUpperCase و ()toLowerCase
هر یک از این متدها به ترتیب جهت تبدیل کاراکترهای استرینگ مد نظر به حروف بزرگ و کوچک به کار گرفته میشوند. به طور مثال، فرض کنیم استرینگی به صورت «EhSan AzimI» را به عنوان ورودی از کاربر دریافت کرده و نیاز داریم تا تمامی کاراکترهای آن را به صورت یکسان به حروف کوچک یا بزرگ تبدیل کرده سپس در حافظه ذخیرهسازیم که برای این منظور استفاده از متدهای فوقالذکر راهکار مناسبی میباشد. برای مثال، در کد زیر داریم:
public class Test {
public static void main(String[] args) {
String name = "EhSan AzimI";
System.out.println(name.toLowerCase());
}
}
در ابتدا آبجکتی تحت عنوان name
از روی کلاس String
تعریف کرده و استرینگ «EhSan AzimI» را به آن اختصاص دادهایم سپس متد ()toLowerCase
را روی آبجکت مذکور فراخوانی کرده و نتیجه را به عنوان آرگومان ورودی به متد ()println
دادهایم تا خروجی حاصل را در کنسول چاپ کند به طوری که در خروجی خواهیم داشت:
ehsan azimi
همانطور که میبینید، تمامی کاراکترهای استرینگ مد نظر به حروف کوچک تبدیل شدهاند. حال به منظور تبدیل کلیۀ کاراکترهای استرینگ مربوطه به حروف بزرگ از متد ()toUpperCase
استفاده میکنیم که برای این منظور کد مربوط به مثال قبل را به صورت زیر تغییر میدهیم:
public class Test {
public static void main(String[] args) {
String name = "EhSan AzimI";
System.out.println(name.toUpperCase());
}
}
با اجرای کد فوق، متد از پیش تعریفشدۀ ()toUpperCase
روی آبجکت name
فراخوانی شده و منجر بدین میشود تا کاراکترهای استرینگ مد نظر به حروف بزرگ تبدیل شوند که نتیجۀ حاصل از اجرای آن به صورت زیر خواهد بود:
EHSAN AZIMI
همانطور که ملاحظه میشود، تمامی کاراکترهای استرینگ ورودی به حروف بزرگ تبدیل شده و در خروجی چاپ شدهاند.