当前位置: 首页 > 面试题库 >

为什么我的字符串与字符串比较失败?

秦诚
2023-03-14
问题内容

我有一个Android应用程序,我想检查安装的应用程序名称是否与传递给包含此代码的函数的字符串匹配。代码和示例如下:

private Boolean checkInstalledApp(String appName){
    PackageManager pm = this.getPackageManager(); 
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);
    Boolean isInstalled = false;
    for(ResolveInfo info: list) {
      if (info.activityInfo.applicationInfo.loadLabel( pm ).toString()==appName){
          isInstalled = true;
          break;  
      }
    }

    return isInstalled;
}

假设您打过checkInstalledApp("SetCPU");电话,并且手机上的应用程序名称与返回的名称相同true。但是,它永远不会。我记录了结果,它应该匹配,但事实并非如此。任何人都可以请问我为什么这行不通吗?


问题答案:

使用String的equals()方法代替==运算符来比较字符串:

info.activityInfo.applicationInfo.loadLabel( pm ).toString().equals(appName)

在Java中,新手遇到的最常见错误之一是==用来比较字符串。您必须记住,==比较对象引用而不是内容。



 类似资料:
  • 问题内容: 好的,这很愚蠢,但是wtf还在继续吗? 我在Servlet中有一个String变量,它接受参数的值,并基于该值进行测试以执行某些操作,但是该方法不起作用。问题是什么? 在控制台上,System.out.println向我显示了动作的价值是“某物” 问题答案: 您的第二个比较是错误的。您还应该使用代替,例如: 该运算符比较 引用 的(字符串)对象和正常情况下 等于 字符串不自动具有相同的

  • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

  • 问题内容: 我从书中看到以下代码: 但没有提到为什么“一个”大于“四个”。我试过了,它小于a和b。我想知道JavaScript如何比较这些字符串。 问题答案: 因为和许多编程语言一样,字符串是按字典顺序进行比较的。 你可以认为这是一个空想家版本的字母顺序,区别在于字母排序仅覆盖了26个字符通过。

  • 这里有2个测量: 正如您所见,比较两个匹配的字符串比比较两个大小相同但不匹配的字符串要快。这是非常令人不安的:在字符串比较期间,我认为python是逐字符测试字符串的,所以应该比更长,因为它需要对1进行4次测试才能进行不匹配的比较。可能比较是基于哈希的,但在这种情况下,两种比较的计时应该相同。 你知道为什么吗?

  • 问题内容: 我正在尝试将来自HTML文本字段的值与整数进行比较。它按预期工作。条件是- 文本字段的值在哪里。只要值介于1-999(含)之间,条件就会返回,否则返回。问题是,来自文本字段的值是字符串类型,我正在将其与整数类型进行比较。可以进行这种比较,还是应该使用parseInt()转换为整数? 问题答案: 因为JavaScript 以允许它们将操作数强制转换为不同类型的方式定义和(以及其他几个运算

  • 问题内容: 我注意到我正在编写的Python脚本表现得很松散,并将其追溯到无限循环,其中循环条件为。在调试器中运行它,结果发现那条线实际上是。当我将其更改为!=’‘而不是时,它工作正常。 另外,即使比较或值,通常还是最好还是默认使用吗?我一直喜欢使用,因为我发现它在美学上更令人愉悦和pythonic(这就是我陷入这个陷阱的方式…),但是我想知道是否打算仅在你关心找到两个对象时才保留它?具有相同ID