因此,我正在尝试检查帐户名列表,以查看运营商输入的用户名是否在数据库中。目前我有:
for(int i = 0; i < rowCount; i ++){
System.out.println("Stored in array:" + accounts[i+1]);
System.out.println("name entered:" + LoginPage.usrname);
if(accounts[i+1] == LoginPage.usrname){
System.out.println("match");
}else{
System.out.println("no match");
}
}
我尝试搞乱像indexOf字符串之类的东西,但无法使用任何东西。我确信这是一个简单的解决方案,只是找不到解决方案。我不明白为什么我不能将String数组索引与String变量进行比较,看起来像ti应该是蛋糕。
答案 0 :(得分:2)
这就是你要找的东西:
if(acounts[i+1].equals(LoginPage.usrname))
在==
Strings
Java
上使用Strings
运算符不符合您的预期。它不会比较equals
的内容,而是比较它们在内存中的地址。 Strings
方法会比较Strings
。
作为可能有助于您记住的注释,这对Strings
来说并不特别特别。 Java
是对象,在==
中,使用equals
比较任何类型的对象都会出现同样的问题。如果要比较您创建的自定义类的两个对象的内容,则必须为该类编写Strings
方法。 {{1}}完全相同。
答案 1 :(得分:0)
String是唯一的引用类型,其行为类似于值类型。
在Java尝试使用==
运算符比较String时,Java将尝试检查两个引用是否相等,不是字符串。
为了实现值类型比较,您将使用以下之一:
方法1:str1.equals(str)
方法2:str1.compareTo(str) == 0