برای اطلاع عرض کنم که بهتر است از متد equal استفاده کنید . زیرا در کلاس String هنگامی که شی ساخته میشود جاوا علاوه بر مقدار شی به جایگاه آن در حافظه هم توجه می کند . بنابرین در دستور if بالا حتی اگه از نظر منطقی درست باشد شما با جواب false مواجه خواهید شد
استفاده دستور == برای یک نمونه از کلاس String اشتباه است و باید از دستور equals استفاده کنید(در مثال فوق به جواب درست میرسیم اما اگر دو شی از نوع رشته با عملگر == مورد بررسی قرار بگیرند، برنامه درست عمل نمیکند)
اما دلیل : خیلی ساده است زمانی که شی یا نمونهای از کلاس String را با عملگر == بررسی میکنیم مقدار یا رشته درون نمونه بررسی نمیشود بلکه آدرس خانه حافظه آن بررسی میشود، برنامه آدرس خانه حافظه دو شی را بررسی میکند اگر با هم برابر بودند بدنه if اجرا میشود واگرنه else.
String str;
str="john";
if(str.equals("john"))
{ //first work to do
}
else{
//second work to do
}