嗨我对这个子字符串有一个问题,我希望它是相同的。好吧,我创建了一个函数,您将比较两个名称,然后只要这些名称共享相同的字符,它就会将所有字符更改为空格。你能检查一下这个错误在哪里吗?我很难搞清楚。这是我的代码:
name1 = name1.replace(" ","");
name2 = name2.replace(" ","");
Log.v(TAG, name1);
Log.v(TAG, name2);
Log.v(TAG, String.valueOf(name1.length()));
Log.v(TAG, String.valueOf(name2.length()));
for (int x=0; x < name1.length(); x++){
for (int y=0; y < name2.length(); y++){
Log.v(TAG, "Value of LOOP : "+"-"+String.valueOf(y) +"-"+String.valueOf(x)+"-");
Log.v(TAG,"-"+name1.substring(x)+"-"+name2.substring(y)+"-");
if (name1.substring(x) == name2.substring(y)){
Log.v(TAG, "Value of XY : "+String.valueOf(y)+","+String.valueOf(y));
name1 = name1.replace(name1.substring(x)," ");
name2 = name2.replace(name2.substring(y)," ");
}
}
}
Log.v(TAG,"LOOP SUCCESS");
String name3 = name1 + name2;
Log.v(TAG,"Name 3 Value: "+name3);
答案 0 :(得分:9)
请勿使用==
来比较两个String
变量。使用equals()
方法。
if (name1.substring(x).equals(name2.substring(y))) {
...
答案 1 :(得分:3)
不要将Java字符串与==进行比较,而是使用equals()。基本上你有两个具有相同值的对象。运算符==测试两个引用是否指向同一个对象。
答案 2 :(得分:2)
java中的字符串/对象比较是.equals()
而不是==
if (name1.substring(x).equals(name2.substring(y)))
答案 3 :(得分:1)
正如其他人所指出的,每当你想要比较两个String对象的实际数据时,你应该使用.equals()
使用==
只会比较双方是否是相同的对象(换句话说,如果它们是相同的记忆位置。)
以下是一些可以帮助您理解的代码
String s = "Hello";
String d = "Hello";
System.out.println(s.equals(d)); // Prints out true
System.out.println(s == d); // Prints out false
String newS = s;
System.out.println(s.equals(newS); // Prints out true, the data is still the same
System.out.println(s == newS); // Prints out true because they are the same object
.equalsIgnoreCase()
的工作方式相同,但"Hello"
和"hello"
将被视为相等的字符串。