2016-04-03 73 views
0

我不明白爲什麼以下if語句永遠不會命中,我通過日誌證實了movie和film.get(i).getTitle()是相同的字符串:通過ArrayList(Java)迭代遇到問題

List<Film> films = new ArrayList<Film>(); 
films = filmDB.getAllFilms(); 



for(int i = 0; i < films.size(); i++) 

       if(movie == films.get(i).getTitle()) 
       { 
        Log.d("TITLEMOVIE", films.get(i).getTitle()); 
        ; 
       } 
      else 
       { 
        Log.d("NOMATIC", films.get(i).getTitle()); 
       } 
+0

您需要使用String的equals方法來比較字符串的內容。 ==測試兩個引用是否都爲null或者都指向同一個對象。 –

+0

使用等於字符串比較 –

+0

我不怎麼想念我需要使用兩個字符串.equals,謝謝! –

回答

0

==對於除基元以外的任何內容比較兩個對象的內存地址。使用.equals來比較字符串和其他對象。

即;

String str1 = "bla"; 
// Use String::new to make sure 'str1' and 'str2' don't reference the same literal 
String str2 = new String("bla"); 

System.out.println(str1 == str1); // true 
System.out.println(str1 == str2); // false 
System.out.println(str1.equals(str2)); // true