java - 如果即使条件为真,条件也不起作用

标签 java

我一直在为一个项目执行以下操作,但找不到问题所在。我一直在尝试查找我的计算机中可用的所有 mp3 文件,代码工作正常,直到 if 条件 if(extension == "mp3")

在调试时我发现 if即使条件为true,条件也不会执行.

public class AudioService {

    File[] audioFiles;
    File[] roots = File.listRoots();
    ArrayList<AudioFile> audios = new ArrayList<AudioFile>();
        int idIterator = 0;

    public List<AudioFile> getLocalAudioFiles() {
        for (int i = 0; i < roots.length; i++) {
            searchDir(roots[i]);
        }
        return audios;
    }

    public void searchDir(File directory) {
        File[] filesList = directory.listFiles();
        for (int i = 0; i < filesList.length; i++) {
            AudioFile af = new AudioFile();
            if (filesList[i].isDirectory()) {
                searchDir(filesList[i]);
            } else {
                int dotLast = filesList[i].getName().lastIndexOf('.');
                String extension = filesList[i].getName().substring(dotLast+1);
                if(extension == "mp3") {
                    idIterator++;
                    af.id = idIterator;
                    af.name = filesList[i].getName();
                    af.path = filesList[i].getPath();
                    af.type = extension;
                    audios.add(af);
                }
            }
        }
    }

    public static void main(String args[]) {
        List<AudioFile> af;
        AudioService as = new AudioService();
        af = as.getLocalAudioFiles();
    }
}

我不知道我哪里出了问题,需要帮助。提前致谢。

最佳答案

字符串不是原语。您需要对平等进行特殊检查,例如,

if( "mp3".equals(extension)) { }

关于java - 如果即使条件为真,条件也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48533945/

相关文章:

java - java -cp 与 java -jar 之间的区别

java - 安卓错误: Unable to resume activity Adview on a null object reference

java - 如何使用绑定(bind)类通过代码将 JComboBox selectedItem 绑定(bind)到 Jtable?

java键值对,键查找为 "startswith"

Java循环没有终止

java - 开关中的中断标签

java - 是否可以在一个节点上运行多个 Selenium 测试?

java - 通过 Hamcrest 断言集合中匹配元素的数量

java - 我们可以将java编译器集成到azure应用程序中吗?

java - NullPointerException:尝试对空对象引用调用接口(interface)方法 'int java.util.List.size()'