2014-09-06 7 views
-4

Я надеюсь, что кто-то может дать мне объяснения, почему следующий код не будет работать:Сравнения строк, которые используют метод подстроки

  //Why doesnt this work 
      String l = myString.substring(cut, lengthLastBtn-1); 
      String c = myString.substring(cut, lengthLastBtn-1); 

      if(l==c){ 
       Log.i(TAG, "Correct"); 
      } 
      //End 

      //This work! 
      String l = "hi"; 
      String c = "hi"; 

      if(l==c){ 
       Log.i(TAG, "Correct"); 
      } 
      // End 

      // Or if i want the Vars as in the first code i have to use the if statement like this 
      if(l.contains(c)){ 
       Log.i(TAG, "Correct"); 
      } 
      //End 

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

+3

'==' сравнивает строки по идентификатору объекта, а не по содержимому. –

+1

Вместо этого вы должны использовать метод 'equals()'. – eightx2

+0

Что такое 'строки, которые используют метод подстроки' ?! –

ответ

1

Когда вы используете оператор «==» со строкой `s, это означает сравнение объектов, а не значение, которое сохраняются объектами.

Для сравнения String s значения, вы должны использовать встроенный метод equals. Результат верен, если объект String представляет одну и ту же последовательность символов.

if(string1.equals(string2)) { 
    //Match 
} 
Смежные вопросы