【问题标题】:String array[0] don't pass at the if字符串数组 [0] 不通过 if
【发布时间】:2012-01-23 18:12:40
【问题描述】:

大家好,我有一个问题:

我有一个数组

String[] parte

我需要数组的第一个值,所以我这样做了:

String verifica = parte[0] // It can be N (for Name) L (for List) and E (for Error)

为什么如果我运行这段代码并且我知道“verifica”是 L

if (verifica == "L") { //If code
} else { //Else code
}

它总是返回给我 Else 代码

非常感谢你

-马特奥

【问题讨论】:

    标签: java android arrays if-statement


    【解决方案1】:

    在Java中比较字符串必须使用String.equals()

    if (verifica.equals("L")) { //If code
    

    您试图做的是比较两个不同的对象,而不是它们的内容。

    【讨论】:

    • @SmileApplications:因为verifica"L" 不是同一个对象,这就是您要比较的对象。 String.equals() 比较的是字符串的内容,而不是对象本身。
    • 但是verifica是一个字符串,而“L”是什么?
    • @SmileApplications:它们是对String 对象的引用,可能指向内存中的不同对象。由于您的目标是检查它们的内容是否相同,但不一定是相同的对象,因此您需要使用String.equals(),它就是这样做的。
    • 谢谢。我来自 PHP,在那里你可以做到这一点,所以我自己很困惑 :)
    【解决方案2】:

    你需要使用:

    if (verifica.equals("L")) { //If code
    } else { //Else code
    }
    

    而不是“==”。 Java 中的 '==' 检查内存中的对象身份,这里您需要的功能是比较字符串值。让我经历了这个错误,才意识到 Java 中的差异(我来自 C# 背景)。

    【讨论】:

      【解决方案3】:

      对字符串使用equals 运算符:

      if (verifica.equals("L"))
      

      【讨论】:

        【解决方案4】:

        您想要if (verifica.equals("L"))if (verifica.compareTo("L") == 0)== 不是比较字符串的可靠运算符。

        【讨论】:

        • 谢谢。我来自 PHP,在那里你可以做到这一点,所以我很困惑
        猜你喜欢
        • 2022-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 1970-01-01
        相关资源
        最近更新 更多