我是Java的新手(以及一般的编程)。我有一个程序应该在两个变量字符串上运行一个方法,但只有当字符串长度相同且不相同时。
我尝试过使用
while(i < n){
if (string1.length() == string2.length() && string1 != string2){
compare(string1, string2);
i++
}
}
但即使字符串相同,它仍会运行 compare 方法。
我也尝试过使用
while(i < n){
if (string1.length() == string2.length(){
if (string1 == string2){
continue;
}
compare(string1, string2);
}
i++
}
但无论字符串是否相同,这仍然会运行 compare 方法。
我的格式设置是否存在问题,或者可能是误用的关键字?谢谢!
答案 0 :(得分:1)
此string1 != string2
不测试String
值相等,仅测试引用相等性。您需要!string1.equals(string2)
。或者您的while
需要类似,
if (string1.equals(string2)) {
// ... they're equal.
}
值得注意的是,两个String
(s)必须具有相同的length()
或equals()
才会返回false
。
答案 1 :(得分:0)
使用equals()方法而不是==。双等号不能用于对象比较。
答案 2 :(得分:0)
更改
if (string1.length() == string2.length() && string1 != string2)
使用
if (string1.length() == string2.length() && !string1.equals(string2))
==
检查引用相等性。当你进入String
变量时,它们在堆中有两个不同的引用,同时具有相同的value
。要检查值的相等性,您应该使用equals()