编程语言
首页 > 编程语言> > ==和.equals()在java中不起作用[复制]

==和.equals()在java中不起作用[复制]

作者:互联网

参见英文答案 > How do I compare strings in Java?                                    23个
所以我试图比较PackageInfo和ApplicationInfo中的字符串,并在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

所以问题出现在我看到调试模式内部,他们实际上有相同的字符串

调试模式下的示例:

com.android.quicksearchbox

com.android.quicksearchbox

它返回“NOPE DOESNT MATCH”

我真的很好奇为什么会发生这种情况而且我尝试了其他形状如修剪来消除白色空间之间没有,它仍然不会让我“IT MATCHES”,任何人都可以帮忙吗?

谢谢.

解决方法:

替换:if(packageName!= sysName)

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

还有,你有一个;在最后,如果不应该在那里. (这里:if(packageName.equals(sysName.toString()));)

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

就像是:

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

标签:android,java,string,android-studio,package-managers
来源: https://codeday.me/bug/20190919/1812582.html