我不明白为什么下面的if语句永远不会命中,我已经通过日志验证了电影和films.get(i).getTitle()是相同的字符串:
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 :(得分: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