برای مقایسه رشته ها برای برابری ، باید از String object's equals
استفاده کنید یا equalsIgnoreCase
مواد و روش ها. همچنین خواهیم دید که چرا نباید از ==
استفاده کنیم اپراتور برای مقایسه رشته ها.
اگر ما نیاز به مقایسه دو رشته در java داریم و همچنین به پوشش رشته ها اهمیت می دهیم ، می توانیم از equals()
روش.
به عنوان مثال ، قطعه زیر تعیین می کند که آیا دو نمونه String در همه کاراکترها از جمله پوشش برابر هستند:
public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test' + 123;
String thirdString = 'TEST123';
if (firstString.equals(secondString)) {
System.out.println('first and second strings are equal');
}
if (firstString.equals(thirdString)) {
System.out.println('first and third string are equal');
}
} }
خروجی:
first and second strings are equal
توجه داشته باشید:دستور چاپ دوم اجرا نمی شود زیرا پوشش firstString و thirdString مطابقت ندارند.اگر ما نیاز به مقایسه دو رشته در java داریم اما به پوشش رشته ها اهمیتی نمی دهیم ، می توانیم از equalsIgnoreCase()
روش.
به عنوان مثال ، اگر در قسمت کد بالا ، جایگزین کنیم .equals()
| با .equalsIgnoreCase()
روش ، سپس هر دو دستور چاپ اجرا می شوند:
public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test' + 123;
String thirdString = 'TEST123';
if (firstString.equalsIgnoreCase(secondString)) {
System.out.println('first and second strings are equal');
}
if (firstString.equalsIgnoreCase(thirdString)) {
System.out.println('first and third string are equal');
}
} }
خروجی:
first and second strings are equal
first and third string are equal
مربوط:
این عملگرها در واقع منابع را آزمایش می کنند ، و از آنجا که چندین اشیا can رشته می توانند یک رشته را نشان دهند ، ممکن است پاسخ غلط بدهد.
در عوض ، از String.equals(Object)
استفاده کنید روش ، که اشیا St String را بر اساس مقادیر آنها مقایسه می کند.
public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test123';
String thirdString = new String('Test123');
if (firstString == secondString) {
System.out.println('first and second strings are equal');
}
if (firstString == thirdString) {
System.out.println('first and third strings are equal');
}
} }
خروجی:
first and second strings are equal
توجه داشته باشید:بیانیه چاپ دوم اجرا نمی شود.هنگام مقایسه یک رشته با یک مقدار ثابت ، می توانید مقدار ثابت را در سمت چپ برابر قرار دهید تا اطمینان حاصل کنید که یک NullPointerException
دریافت نخواهید کرد. اگر رشته دیگر خالی باشد.
مثلا:
'baz'.equals(foo)
در حالی که foo.equals('baz')
پرتاب خواهد کرد NullPointerException
اگر foo پوچ است ، 'baz'.equals(foo)
ارزیابی خواهد کرد به false
.
یک گزینه قابل خواندن تر ، استفاده از Objects.equals()
است ، که هر دو پارامتر را بررسی می کند:
به عنوان مثال، Objects.equals(foo, 'baz')
.
از جاوا 1.7 ، می توان یک متغیر String را با دستورالعمل ها در دستور switch مقایسه کرد. مطمئن شوید که رشته خالی نباشد ، در غیر این صورت همیشه یک | | + + _ | پرتاب می کند. مقادیر با استفاده از NullPointerException
مقایسه می شوند ، یعنی به حروف کوچک و بزرگ.
String.equals
در این پست نحوه مقایسه رشته ها در جاوا با مثالهای کد را توضیح دادیم. هنگام پوشاندن رشته ها ، باید از public class CompareTwoStrings {
استفاده کنیم و وقتی پوشش مهم نیست ، پس باید از
public static void main(String[] args) {
String stringToSwitch = 'A';
switch (stringToSwitch) {
case 'a':
System.out.println('a');
break;
case 'A':
System.out.println('A'); //the code goes here
break;
case 'B':
System.out.println('B');
break;
default:
break;
}
} } .equals()
استفاده کنیم.
علاوه بر این ، ما نباید از .equalsIgnoreCase()
استفاده کنیم عملگر برای مقایسه رشته ها ، به عنوان ==
اپراتور مرجع را بررسی می کند و نه مقدار.