* Сравнение строк в 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”
Оставьте комментарий
Категории:
Архивы:
- Июнь 2018
- Август 2017
- Май 2017
- Сентябрь 2016
- Август 2016
- Сентябрь 2015
- Август 2015
- Декабрь 2012
- Ноябрь 2012
- Февраль 2012
- Май 2011
- Апрель 2011
- Март 2011
- Январь 2011
- Ноябрь 2010
- Октябрь 2010
- Сентябрь 2010
- Август 2010
- Июнь 2010
- Май 2010
- Апрель 2010
- Март 2010
Сентябрь 26th, 2011 at 3:22
Спасибо очень интересная статья!!!
Только вот вопрос, допустим с 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 ????
Июль 31st, 2012 at 17:20
while(!x.equalsIgnoreCase(y));