为什么字符串不相等?

时间:2012-04-25 05:30:48

标签: java

  

可能重复:
  String is not equal to string?

我是java的新手,我无法弄清楚这个代码块有什么问题。 我知道数组不是null我在其他地方测试它。也许我习惯用c#编程语法问题。

     Scanner input = new Scanner(System.in);
     System.out.println("Enter ID :");
     String employeeId = input.nextLine();
     int index =  -1;
     for(int i = 0 ; i < employeeCounter ; i++)
     {
         if(employeeId == employeeNumber[i])
         {
           index = i;
         }
     }

     if(index == -1)
     {
         System.out.println("Invalid");
         return;
     }

我总是进入'无效'部分。知道为什么吗? 提前致谢


employeeNumber[0]"12345" employeeId"12345" 但我可以进入第一个if语句,尽管employeeId等于employeeNumber[0]

7 个答案:

答案 0 :(得分:12)

请勿将字符串与==进行比较。

使用

if (string1.equals("other")) {
    // they match
}

答案 1 :(得分:6)

比较那样的字符串

if(employeeId.equals(employeeNumber[i]) {

}

答案 2 :(得分:4)

正如其他人所指出的那样 - 完整的代码会有所帮助,但我的猜测就是代码的这一行:

if(employeeId == employeeNumber[i])

您不使用==比较2个字符串。请改用equals()或equalsIgnoreCase()。 ==仅检查对象相等性,即employeeId和employeeNumber引用内存中的同一对象。因此,对于对象总是使用equals()方法...对于字符串,您还可以使用equalsIgnoreCase()进行不区分大小写的匹配。 ==应该用于原始类型,如int,long等。

答案 3 :(得分:3)

当您使用带有两个字符串的==时,它会比较指针地址 您应该使用firststring.equals(secondstring)来比较两个字符串

答案 4 :(得分:2)

使用equals()方法比较字符串

if(employeeId.equals(employeeNumber[i])){}

答案 5 :(得分:2)

比较字符串时,请使用     String1.equals(String2); 这应该给你结果

答案 6 :(得分:0)

“==”检查两个对象的引用是否相同。但equals()方法检查内容是相同还是不同。