迭代ArrayList(Java)时遇到麻烦

时间:2016-04-03 13:55:32

标签: java android if-statement for-loop android-studio

我不明白为什么下面的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());
                }

1 个答案:

答案 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