آشنایی با متدهای مرتبط با کلاس استرینگ جاوا


پیش از پرداختن به مباحث تکمیلی String ها در زبان برنامه نویسی جاوا، در این قسمت از آموزش قصد داریم یکی از خصوصیات کلیدی محیط برنامه نویسی اکلیپس را مورد بررسی قرار دهیم. این خصیصه نام های مختلفی همچون Auto Complete, Code Assist, Code Completion, Content Assist دارد. به طور خلاصه اگر بخواهیم در حین کدنویسی از خود محیط برنامه نویسی اکلیپس راهنمایی بگیریم، می توانیم از ترکیب کلید های Ctrl و Space استفاده کنیم. با این کار زمانی که ما در حین نوشتن چیزی مثلاً نام یک متغیر که قبلاً ایجاد کرده ایم هستیم، با هم زمان زدن کلید هایی که در بالا گفته شد، از محیط برنامه نویسی اکلیپس می خواهیم تا کد را برای ما تکمیل کند. برای روشن شدن مطلب به مثال زیر توجه کنید:

public class Test {
    public static void main(String[] args) {
        String myFistName;
    }
}

ما یک رشته تحت عنوان myFirstName ایجاد کرده ایم که فاقد هرگونه مقداری است. حال در خط بعد می خواهیم که مقداری به آن اختصاص دهیم. از این رو شروع به نوشتن نام رشته ی خود می کنیم به این صورت که می نویسیم my. در این مرحله اصلاً نیازی نیست که کل نام را به صورت دستی وارد کنیم بلکه می توانیم پس از نوشتن دو کاراکتر my کلید های Ctrl و Space را به صورت هم زمان فشار دهیم که در این صورت نام myFirstName به صورت خودکار نوشته می شود. از مزایای استفاده از این ویژگی محیط برنامه نویسی اکلیپس می توان گفت که نه تنها زمان کدنویسی را کاهش داده بلکه میزان خطاهای تایپی را نیز به حداقل می رساند.

در واقع این ویژگی اکلیپس صرفاً برای تکمیل کردن نام ها و ... نیست بلکه جایی که این قابلیت خیلی زیاد به برنامه نویسان کمک می کند برای تکمیل کد است. در حقیقت از آنجا که قسمت های تشکیل دهنده API زبان برنامه نویسی جاوا بسیار گسترده است (بیش از 4000 مورد)، به سادگی می توان از این ویژگی برای تکمیل کد خود استفاده کنیم به این صورت که صرفاً نیاز است ابتدای نام متد و یا کلاس مد نظر و یا هر چیزی را به خاطر داشته باشیم و با زدن کلید های Ctrl و Space محیط برنامه نویسی اکلیپس پیشنهادات خود را برای تکمیل کد به ما می دهد و ما به سادگی می توانیم از میان پیشنهادات ارائه شده گزینه مد نظر خود را انتخاب کرده و کد خود را تکمیل کنیم.

مقایسه ی مقادیر رشته ها در زبان جاوا
اکنون که با این ویژگی ارزشمند اکلیپس آشنا شدیم می توانیم به مبحث تکمیلی String ها در زبان برنامه نویسی جاوا بپردازیم. در واقع زمان هایی برای برنامه نویسان جاوا پیش می آید که نیاز دارند تا اشیاء ساخته شده از روی کلاس String را با یکدیگر مقایسه کنند که در این صورت از متد خاصی تحت عنوان equal می توان استفاده کرد. در واقع با این کار، ما قصد داریم ببینیم آیا مقدار دو شیئ ما که از جنس String هستند یکی است یا خیر. برای روشن تر شدن مطلب به مثال زیر توجه کنید:

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 داریم که دارای مقادیر Behzad و Moradi هستند. حال در اولین دستور ;()System.out.println ما نیاز داریم تا جمله My name is Behzad به نمایش در آید، برای همین منظور با قرار دادن علامت + و نام رشته یی که در برگیرنده مقدار "Behzad" است به راحتی این جمله را در بخش کنسول به نمایش در می آوریم. در مرحله بعدی ما می خواهیم تا مقدار دو رشته را با یکدیگر مقایسه کنیم. برای این منظور نام رشته ای که می خواهیم با رشته ی دیگر مقایسه شود را نوشته سپس یک متد تحت عنوان equals به آن اضافه کرده و داخل پرانتز این متد نام رشته یی را می نویسیم که می خواهیم رشته ی قبلی را با آن مقایسه کنیم (به طور خلاصه به صورت (lastName.equals(name می نویسیم.) چنانچه برنامه را اجرا کنیم، خروجی زیر را مشاهده خواهیم کرد:

در واقع خروجی متد ما چیزی از جنس بولین -درست یا غلط- خواهد بود که مقدار آن یا true است و یا false و در این جا از آن رو که مقادیر متغیرهای ما با یکدیگر متفاوت هستند، مقدار false به نمایش در خواهد آمد. اگر بخواهیم جواب true شود، به راحتی می توانیم مقدار متغیر lastName را همانند مقدار متغیر name کنیم و مشاهده می کنیم که جواب true خواهد بود. در واقع کد ما به شکل زیر تغییر پیدا خواهد کرد:

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));
    }
}

و در نهایت خروجی برنامه ما پس از اجرا به شکل زیر خواهد بود:

شمردن تعداد کاراکترهای یک رشته در زبان جاوا
گاهی اوقات برای ما در برنامه نویسی با زبان جاوا پیش می آید که نیاز داریم تا تعداد کاراکتر های یک رشته را بشماریم که برای این منظور می توانیم از متدی تحت عنوان 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());
    }
}

در مثال فوق ما یک شیئ از جنس کلاس String داریم که نام آن sentence است و مقدار آن جمله .This is a short sentence می باشد. حال در دستور اول ما متغیر خود را به نمایش در می آوریم اما در دستور دوم جمله The number of its characters equals to را به علاوه متدی می کنیم که تعداد کاراکتر های رشته ی ما را بشمارد. برای همین منظور نام رشته ی خود را نوشته و نام متد خود که در اینجا length است و قرار است تعداد کاراکتر ها را بشمارد ضمیمه آن می کنیم (توجه داشته باشیم که این متد حتی جاهای خالی، نقطه، کاما و غیره را نیز در رشته ما می شمارد.) خروجی برنامه به شکل زیر خواهد بود:

اگر توجه کرده باشید تعداد کاراکتر های جمله ما 20 عدد است اما خروجی برنامه عدد 25 را به نمایش در می آورد و این از آنجا ناشی می شود که متدی که استفاده کردیم نقطه و فضاهای خالی را نیز شمرده است.

کوچک یا بزرگ کردن حروف یک رشته در زبان جاوا
گاهی اوقات ما نیاز داریم تا کاراکتر های یک رشته را به حروف بزرگ و یا کوچک تبدیل کنیم. از این رو می توانیم از متدهای toUpperCase و toLowerCase به ترتیب برای بزرگ کردن و کوچک کردن حروف استفاده کنیم. در حقیقت یکی از کاربردهای این متدها این است که گاهی اوقات ما نیاز داریم تا کلیه ی ورودی ها را به صورت حروف بزرگ و یا حروف کوچک ذخیره سازیم. برای این منظور از این متدها استفاده می کنیم تا این کار به صورت خودکار انجام شود (در آموزش های آتی بیشتر از این متد استفاده خواهیم کرد.) فرض کنیم مقدار متغیر name که در مثال های قبلی استفاده کردیم معادل با EhSan AzimI باشد و ما نیاز داریم تا بی دقتی صورت گرفته در حین وارد کردن مقدار این متغیر را جبران کنیم. برای این منظور به صورت زیر عمل می کنیم:

public class Test {
    public static void main(String[] args) {
        String name = "EhSan AzimI";
        System.out.println(name.toLowerCase());
    }
}

در حقیقت با نوشتن نام متغیر و ضمیمه کردن متدی تحت عنوان toLowerCase کلیه حروف متغیر را به حروف کوچک تبدیل می کنیم:

عکس این قضیه هم صادق است. به عبارت دیگر برای تبدیل کلیه حروف از متد دیگری تحت عنوان toUpperCase استفاده می کنیم و خروجی برنامه ما به شکل زیر خواهد بود:

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
niusha
niusha
سلام خیلی ممنونم از آموزش های جامعتون
من با یه اروری مواجه میشم که هرکاری می کنم درست نمیشه. اروری که باهاش مواجه میشم این هست : must declare a named package because this compilation unit is associated to
the named module
ممنون میشم راهنماییم کنید
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام من میخواستم یه برنامه ای بنویسم(با استفاده از واسط گرافیکی)که دو تا رشته رو بگیره با هم مقایسه کنه و بعد کلمات مشترک رو رنگی کنه نمیدونم برای رنگی کردن کلمات مشترک چی کار کنم
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام. من یه برنامه نوشتم که دو رشته رو باهم مقایسه کنه اماموقع ران گرفتن وقتی رشته اولو فارسی مینویسم وبین کلمات اسپیس میزنم بهم اجازه نوشتن رشته دومو نمیده وران میکنه برنامه رو. چه کاری میشه کرد که اینجوری نشه؟
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
چگونه یک متن فارسی در کنسول نرم افزار اکلیپس نمایش داده میشود؟؟
Ali
Ali
لطفا یه قسمت خلاصه دروس اضافه کنید تا بعدن بتونیم جمع بندی برای مرور داشته باشیم . ممنون
daictor
daictor
پاراگراف ۵ خط ۲ : my first name is : behzad
و اینکه علامت سوال در خط ۲ اجرای برنامه اضافیست یا در کد باید اضافه شود.
۳پاس
حمیدرضا
حمیدرضا
خیلی ممنون از آموزش های خوبتون
Saeid Hadi
Saeid Hadi
سلام و ممنون از آموزش های عالی رایگان و زحمات بی دریغتون
میشه برام توضیح بدین چرا کد من اشتباه است و باید چیکار کنم؟
String mytext = "in the name of GOD";
String mytext3= "in the name of god";
System.out.println((mytext.length()).equals(mytext3.length()));
کاربر میهمان
Titanمن یک کاربر مهمان هستم
سلام. چرا این روش مقایسه برای اعداد (با استفاده از کلید واژه int ) جواب نمیده. آیا باید از روش دیگه ای استفاده کرد؟
کاربر میهمان
بابکمن یک کاربر مهمان هستم
با سلام و خدا قوت
میشه در پایان هر فصل برای تمرین دوستانی که آموزش هارو دنبال میکنند یه پیشنهادی بدید ؟
ممنون