پیش از پرداختن به مباحث تکمیلی کلاس 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
همانطور که ملاحظه میشود، تمامی کاراکترهای استرینگ ورودی به حروف بزرگ تبدیل شده و در خروجی چاپ شدهاند.
