نحوه مقایسه رشته ها در جاوا

برای مقایسه رشته ها برای برابری ، باید از 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 مطابقت ندارند.

مقایسه رشته ها با روش () equalsIgnoreCase

اگر ما نیاز به مقایسه دو رشته در 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() استفاده کنیم عملگر برای مقایسه رشته ها ، به عنوان == اپراتور مرجع را بررسی می کند و نه مقدار.