* Сравнение строк в Java

Опубликовано Январь 2nd, 2011 Автор: Игорь. В категории Java, Программирование.

Во время программирования на Java одного приложения столкнулся с необходимостью проверить на совпадение две строчки. По привычке сделал стандартную проверку с оператором “==”, вида:

if (str1 == str2)

Какого же было мое удивление, когда проверка не сработала. Я начал копать и разобрался с сутью проблемы, чем сейчас и хочу поделиться.

Возврат денег при покупках в Интернете

Все дело в том, что компилятор в указанном выше примере будет проверять не само содержимое строк, а только ссылки на них. Простой пример. Следующий код выведет сообщение “Строки не совпадают“:

String str1 = new String(“test”);
String str2 = new String(“test”);
if (str1 == str2)
System.out.println(“Строчки совпадают”);
else
System.out.println(“Строчки не совпадают”);

Поэтому для сравнения двух строк нужно использовать логический метод equals (object obj). Он вернет значение true , если аргумент obj не равен null, является объектом класса string, и строка, содержащаяся в нем, полностью идентична данной строке вплоть до совпадения регистра букв.

String str1 = “test”;
String str2 = “test”;
if (str1.equals(str2))
System.out.println(“Строчки совпадают”);
else
System.out.println(“Строчки не совпадают”);

Этот код уже верный и возвратит сообщение “Строчки совпадают“.

Кроме того, если вам нужно проверить строки игнорируя регистр – используйте метод equalsIgnoreCase(“obj”). Удачи и будьте аккуратнее при программировании.

Теги: , , , , , ,



2 Комментариев к “Сравнение строк в Java”

  1. Ivan Booravoi Says:

    Спасибо очень интересная статья!!!
    Только вот вопрос, допустим с if adn equals всё понятно, то как быть кода мы заходим создать цикл,
    while и do-while.
    О чём в общем то речь, попробую для наглядности привести листинг…
    —————–
    public class JavaApplication1 {

    public static void main(String[] args) {
    int x;
    int y;
    do{
    x=Integer.parseInt(JOptionPane.showInputDialog(“Значение х”));
    y=Integer.parseInt(JOptionPane.showInputDialog(“Значение y”));
    }while(x!=y);

    JOptionPane.showMessageDialog(null, “Значение верно!!!”);

    }
    }
    Здесь как бы всё понятно, что бы повторился цикл нужно чтобы “XY”

    То как быть кода x and y принимают значение String

    public class JavaApplication1 {

    public static void main(String[] args) {
    String x;
    String y;
    do{
    x=JOptionPane.showInputDialog(“Значение х”);
    y=JOptionPane.showInputDialog(“Значение y”);
    }while(x.equalsIgnoreCase(y));

    JOptionPane.showMessageDialog(null, “Значение верно!!!”);

    }
    }
    Как видно из листинга, цикл будет бесконечно повторятся, пока значения будут равны…
    на примере C# можно решить следующим способом

    }
    while (x.ToLower()!=y.ToLower())

    Вопрос.
    Есть ли подобное решение на JAVA ????

  2. Jack Says:

    while(!x.equalsIgnoreCase(y));

Требрек URL | Комментарии RSS

Оставьте комментарий