我写了一些比较两个字符串“abc”和“de”的代码。字符串abc被解析并返回到“doc”到ext,然后进行比较。虽然看起来条件是真的但仍然是其他部分正在执行。我没有得到PLZ帮助我....非常感谢。
public class xyz{
String abc="doc2.doc";
String de="doc";
public static void main(String arg[]){
xyz c=new xyz();
String ext = null;
String s =c.abc;
String d =c.de;
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1){
ext = s.substring(i+1).toLowerCase();
}
System.out.println(ext);
if(ext==d){
System.out.println("true");
}
else{
System.out.println("false");
}
}
}
答案 0 :(得分:3)
您无法将字符串与==
运算符进行比较。
您必须使用String.equals()
在你的情况下,它将是
if (ext.equals(d)) {
System.out.println("true");
} else {
System.out.println("false");
}
答案 1 :(得分:1)
==
测试参考相等性。
.equals()
测试价值平等。
因此,如果你真的想测试两个字符串是否具有相同的值,你应该使用.equals()
// These two have the same value
new String("test").equals("test") ==> true
// ... but they are not the same object
new String("test") == "test" ==> false
// ... neither are these
new String("test") == new String("test") ==> false
在这种情况下
if(ext.equals(d)) {
System.out.println("true");
}
else {
System.out.println("false");
}
答案 2 :(得分:0)
使用equals
运算符来比较字符串:
ext.equals(d)
答案 3 :(得分:0)
你可以用.equals()编写它。
private String a = "lol";
public boolean isEqual(String test){
return this.a.equals(test);
}
答案 4 :(得分:0)
您无法将字符串与==进行比较,因为它们是不同的对象。 内容可能相同,但这不是==看的内容。 在其中一个字符串上使用equals方法将其与另一个字符串进行比较。
在您的代码中,使用:
if(d.equals(ext)){
如果您需要比较两个字符串,并且只有一个字符串是变量,我建议采用以下方法:
"foo".equals(variableString)
这样你就可以确定你不会在Null对象上调用equals。
另一种可能性是使用compareTo方法而不是equals方法,该方法也可以在其他一些Java类中找到。当字符串匹配时,compareTo方法返回0.
您可以在Java here中找到有关字符串的更多信息。
答案 5 :(得分:0)
你应该写
if(ext.equals(d))
instead of
if(ext==d)
答案 6 :(得分:0)
String str1, str2, str; // References to instances of String or null
str1 = "hello"; // The reference str1 points to an instance of "hello" string
str2 = "hello"; // The reference str2 points to another instance of "hello" string
str3 = str2; // The reference str3 points to the same instance which str2 does.
assert str1.equals( str2 ); // Both string instances are identical.
assert str1 != str2; // Both references point to independent instances of string.
assert str2 == str3; // Both references point to the same instance of string.