იმისათვის, რომ სიმები შედარდეს თანასწორობისთვის, უნდა გამოიყენოთ 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 გარსაცმები არ ემთხვევა.თუ ჩვენ გვჭირდება ორი სტრიქონის შედარება 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()
.
უფრო მეტიც, ჩვენ არ უნდა გამოვიყენოთ ==
ოპერატორი სტრიქონების შედარებას, როგორც ==
ოპერატორი ამოწმებს მითითებას და არა მნიშვნელობას.