2013-04-13 2 views
0

У меня есть следующий код:Сравнивая две строки в случае заявления

String tmp = "cif"; 
String control = tmp.substring(1); 


if(control == "if") { 

append = "if("; 

} 

Однако, несмотря на контроль будучи «если», то тест будет по-прежнему терпят неудачу. Любые решения?

+3

проверить это http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

ответ

2

Для строки сравнит использовать equals()

5

== сравнивает ссылки на объекты, тогда как .equals() сравнивает фактическое значение

if(control.equals("if") { 
    append = "if("; 
} 
2

«==» оператор будет сравнивать адреса памяти двух строк, а не их значения. Вам нужно использовать equals(). В вашем случае сделайте что-нибудь вроде "if".equals(control);.

0

Вы не можете сравнивать строки с помощью оператора ==, поскольку строки являются объектами.

Будучи объектами, он предоставляет дополнительную функциональность из них, имеющих различные методы внутри своих классов. Одним из таких методов, который может пригодиться, является метод equals().

код, следовательно, вы хотите, будет:

String tmp = "cif"; 
String control = tmp.substring(1); 

if("if".equals(control) { 

... 
1
String tmp = "cif"; 
String control = tmp.substring(1); 

if(control.equals("if")) { 
    append = "if("; 
} 
Смежные вопросы