== 和 .equals() 在 Java 中不起作用 [英] == and .equals() not working in java

查看:37
本文介绍了== 和 .equals() 在 Java 中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我试图比较 PackageInfo 和 ApplicationInfo 中的字符串并在 Android Studio 中检索它们的包名称.

So I was trying to compare the string in PackageInfo and ApplicationInfo and retrieve their package name in Android Studio.

    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS);

            for (PackageInfo app : apps)
                for(ApplicationInfo packageInfo:packages)
                        String packageName = packageInfo.packageName;
                        String sysName = app.packageName;

                        if (packageName != sysName)
                        {
                            Log.d("", "NOPE DOESNT MATCH");
                            break;
                        }
                        if (packageName.equals(sysName.toString())) ;
                        {
                            Log.d("", "IT MATCHES");
                        //do something after that

所以当我在调试模式中看到问题时,他们实际上有相同的字符串

So the problem came by when I saw inside the debug mode, they actually HAD the same string

调试模式示例:

com.android.quicksearchbox

com.android.quicksearchbox

它返回NOPE DOESNT MATCH"

我真的很好奇为什么会发生这种情况,我尝试了其他形式,例如修剪以去除中间的空白,不,它仍然没有返回IT MATCHES",有人可以帮忙吗?

I'm really curious why this will happen and I have tried other form like trim to take off away white spaces between and no, it still does not return me "IT MATCHES", can anyone help please?

谢谢.

推荐答案

替换:if (packageName != sysName)

使用:if (!packageName.equals(sysName.toString()))

此外,您在 if 的末尾有一个 ; ,它不应该在那里.(这里:if (packageName.equals(sysName.toString())) ;)

Also, you have a ; at the end of if which shouldn't be there. (Here: if (packageName.equals(sysName.toString())) ;)

实际上,为了更好地形成你的条件,你应该有一个 if-else 块而不是 2 个 ifs.

Actually, to form your condition better, you should have an if-else block instead of 2 ifs.

类似:

if (packageName.equals(sysName.toString())){
    Log.d("", "IT MATCHES");
} else {
    Log.d("", "NOPE DOESNT MATCH");
}

这篇关于== 和 .equals() 在 Java 中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆