როგორ შევადაროთ სტრიქონები ჯავაში

იმისათვის, რომ სიმები შედარდეს თანასწორობისთვის, უნდა გამოიყენოთ String ობიექტის equals ან equalsIgnoreCase მეთოდები ასევე ვნახავთ, რატომ არ უნდა გამოვიყენოთ == ოპერატორი სტრიქონების შედარებას.



სიმების შედარება ტოლობის () მეთოდთან

თუ საჭიროა Java- ს ორი სტრიქონის შედარება და სტრიქონების გარსაცმზე ზრუნვაც შეგვიძლია equals() მეთოდი

მაგალითად, შემდეგი ფრაგმენტი განსაზღვრავს სტრიქონის ორი ინსტანცია ტოლია თუ არა ყველა სიმბოლოზე, გარსაცმის ჩათვლით:


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

დაკავშირებული:



არ გამოიყენოთ == ოპერატორი სიმების შედარებისთვის

Შენიშვნა:ჯავაში ორი სტრიქონის შედარებისას არ უნდა გამოვიყენოთ == ან ! = ოპერატორები.

ეს ოპერატორები სინამდვილეში ამოწმებენ ცნობებს და რადგან სიმების მრავალ ობიექტს შეუძლია წარმოადგინოს იგივე სტრიქონი, ამან შეიძლება არასწორი პასუხი გასცეს.


ამის ნაცვლად, გამოიყენეთ String.equals(Object) მეთოდი, რომელიც შეადარებს 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 თუ სხვა სიმები არის null.

Მაგალითად:


'baz'.equals(foo)

ხოლო foo.equals('baz') დააგდებს NullPointerException თუ foo ბათილია, 'baz'.equals(foo) შეაფასებს false.

უფრო კითხვადი ალტერნატივაა Objects.equals() გამოყენება, რომელიც ნულოვან შემოწმებას ახდენს ორივე პარამეტრზე:

მაგალითად. Objects.equals(foo, 'baz').



სტრიქონების შედარება შეცვლის განცხადებაში

Java 1.7 – ით შესაძლებელია String ცვლადის შედარება მნიშვნელობებთან გადამრთველში. დარწმუნდით, რომ სტრიქონი არ არის null, წინააღმდეგ შემთხვევაში, ის ყოველთვის დააგდებს 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;
}
} }

დასკვნა

ამ პოსტში განვმარტეთ, თუ როგორ უნდა შევადაროთ სტრიქონები java– ში კოდის მაგალითებთან. როდესაც სტრიქონების გარსაცმას აქვს მნიშვნელობა, უნდა გამოვიყენოთ .equals() და როდესაც გარსაცმები არ არის მნიშვნელოვანი, მაშინ უნდა გამოვიყენოთ .equalsIgnoreCase().

უფრო მეტიც, ჩვენ არ უნდა გამოვიყენოთ == ოპერატორი სტრიქონების შედარებას, როგორც == ოპერატორი ამოწმებს მითითებას და არა მნიშვნელობას.