==和.equals()在java中不起作用[复制]
发布时间:2020-12-15 07:36:56 所属栏目:Java 来源:网络整理
导读:参见英文答案 How do I compare strings in Java?????????????????????????????????????23个 所以我试图比较PackageInfo和ApplicationInfo中的字符串,并在Android Studio中检索它们的包名. ListApplicationInfo packages = pm.getInstalledApplications(Pack
参见英文答案 >
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"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |