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


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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمان
سلام من میخواستم یه برنامه ای بنویسم(با استفاده از واسط گرافیکی)که دو تا رشته رو بگیره با هم مقایسه کنه و بعد کلمات مشترک رو رنگی کنه نمیدونم برای رنگی کردن کلمات مشترک چی کار کنم
کاربر میهمان
کاربر میهمان
سلام. من یه برنامه نوشتم که دو رشته رو باهم مقایسه کنه اماموقع ران گرفتن وقتی رشته اولو فارسی مینویسم وبین کلمات اسپیس میزنم بهم اجازه نوشتن رشته دومو نمیده وران میکنه برنامه رو. چه کاری میشه کرد که اینجوری نشه؟
عبدالحمید ارجمند
عبدالحمید ارجمندAndroid Developer - Java - عاشق گجتهای اپل و مایکــ
شما برای مقایسه ی دو رشتهی (مثلاٌ) استرینگی باید دوتا استرینگ رو تعریف کنید . ( حالا مقدارشون هرچیزی میتونه باشه : عدد ، حروف ، نماد ، عبارات فارسی یا هرچیزی ) بعد برای مقایسه باید نام استرینگها رو با هم مقایسه کنی که خود کنسول اینو متوجه میشه که منظور شما این هست که مقدا اونها رو با هم میخوام جمع کنی ( همانگونه که برای جمع دو اینتیجر نام دو اینتیجر و مینویسی و بین اوندو یک علام به علاوه (+) قرار میدی ) . به نظر میاد شما دارید عبارات رو مستقیما با هم مقایسه میکنید .

در پاسخ به

کاربر میهمان
کاربر میهمان
چگونه یک متن فارسی در کنسول نرم افزار اکلیپس نمایش داده میشود؟؟
عبدالحمید ارجمند
عبدالحمید ارجمندAndroid Developer - Java - عاشق گجتهای اپل و مایکــ
متاسفانه در کنسول نمیتونید عبارات فارسی رو مشاهه کنید ، و هیچ نیازی هم ندارید ،کنسول جای عیب یابی و دیباگینگ است نه جای پرینت پیام . توجه داشته باشید که د راین مرحله هیچ نیازی ندارید که برا این سری مسائل متمرکز باشید. راهها جایگزی رو در آینده میتونید پیدا کنید . دیگه کار شما با دیتابیس خواهد و سایر چیزهایی که ربطی به کنسول نخواهد داشت .

در پاسخ به

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()));
CIna Deuxshiri
CIna Deuxshiri
سلام. از عملگر == استفاده کنید.

در پاسخ به

کاربر میهمان
کاربر میهمان
سلام. چرا این روش مقایسه برای اعداد (با استفاده از کلید واژه int ) جواب نمیده. آیا باید از روش دیگه ای استفاده کرد؟
CIna Deuxshiri
CIna Deuxshiri
سلام. از == استفاده کنید.

در پاسخ به

کاربر میهمان
کاربر میهمان
با سلام و خدا قوت
میشه در پایان هر فصل برای تمرین دوستانی که آموزش هارو دنبال میکنند یه پیشنهادی بدید ؟
ممنون
hamid_r_9750
hamid_r_9750
ممنونم از این آموزش ها.
javad
javad
بسیار عالی
کاربر میهمان
کاربر میهمان
با سپاس فراوان از زحماتتون، بسیار عالی و روان و پر بار؛
یک مشکل بسیار کوچک ، کلمه length به اشتباه در متن lenght تایپ شده است.
ادمین سایت
ادمین سایت
با سلام و تشکر از تذکر شما
اصلاح گردید


ارادتمند
تیم سکان آکادمی

در پاسخ به

کاربر میهمان
کاربر میهمان
متوجه شدم که استفاده نشده ولی جایی مرتبط پیدا نکردم که در مورد tostring بنویسم. اگه لینکه که این رو خوب توضیح داده رو بذارین ممنون میشم.
کاربر میهمان
کاربر میهمان
خیلی ممنون خدا خیرتون بده
کاربر میهمان
کاربر میهمان
میشه در مورد toString هم یه توضیحی بدین
CIna Deuxshiri
CIna Deuxshiri
سلام
در اینجا که از متد toString استفاده نشده.

در پاسخ به

کاربر میهمان
کاربر میهمان
من از این روش برای خوندن اموزش ها استفاده میکنم طوری که ابتدا اموزش تا اخر میخونم بهد شروع میکنم هر تیتر عملی انجام دادن همچنین دفعه بعد که شروع به خوندن میکنم موارد قبلی یکم مرور میکنم ،به نظر شما که نویسنده همین آموزش هستین این روش خوبه اگه پیشنهادی دارین خوش حال میشم از تجربتون استفاده کنم.
بهزاد مرادی
بهزاد مرادی مدرس، کپی‌رایتر و دولوپر
کیوان جان روش خوبیه!

در پاسخ به

Moon
Moon
سلام
با تشکر از نحوه اموزش عالی و گام به گامتون. ای کاش query language و بانک اطلاعاتی رو هم اموزش می دادید. با سپاس
mostafa
mostafa
خیلی خوب بود ممنون
عیسی پور
عیسی پور
ممنون از سایت خوبتون حرف نداره
بهتر بود زیر هر آموزش که به آخر رسیدیم دو تا گزینه مطلب قبلی و مطلب بعدی رو میذاشتید
کاربر میهمان
کاربر میهمان
بسیار خوانا و صریح بود ممنون
کاربر میهمان
کاربر میهمان
با تشکر فراوان
AliJCVD
AliJCVD
تو اموزش های قبلی اتفاقا دنبال این سوال بودم که چجوری میشه یه رشته یا متد رو که قبلا نوشتیم وقتی میخوایم دوباره جایی دیگه استفاده کنیم مجدد تایپ نکنیم و برنامه خودش تشخیص بده که تو این آموزش جوابشو گرفتم :) البته من یکم با visual studio کار کردم خوبی اون نسبت به eclipse اینه که خودش سریع تشخیص میده کلمه مد نظر رو و نمایش میده که با دکمه ی tab میشه ثبتش کرد!!!