Java 为什么字符串相等不起作用?

Java 为什么字符串相等不起作用?,java,string,debugging,hashmap,equality,Java,String,Debugging,Hashmap,Equality,我想测试这两个字符串是否相同,但我不确定哪里做错了。可能是因为HashMap吗?我怎样才能让这个“如果”起作用?因为声誉的问题,我不能添加任何它的形象![调试模式显示val[0]-->“000”(**id=52)*** 私有静态字符串转换(最终字符串){ 字符串温度=s; final迭代器sic=sections.Iterator(); while(sic.hasNext()){ 最后一个字符串[]val=sic.next(); 字符串a=val[0];字符串b=“000”//val[0]是00

我想测试这两个字符串是否相同,但我不确定哪里做错了。可能是因为HashMap吗?我怎样才能让这个“如果”起作用?因为声誉的问题,我不能添加任何它的形象![调试模式显示val[0]-->“000”(**id=52)***

私有静态字符串转换(最终字符串){
字符串温度=s;
final迭代器sic=sections.Iterator();
while(sic.hasNext()){
最后一个字符串[]val=sic.next();
字符串a=val[0];字符串b=“000”//val[0]是000,在调试模式下也显示为“000”。
如果(a.equals(b)){//这必须给出一个真值
val[0]=“1003”}
temp=temp.replaceAll(“\n(“+val[1]+”)\r?\n--*\r?\n,val[0].length()>0?”\n\u25b4\u25ba“+val[0]+”\n$1\n:“\n\n”;//$NON-NLS-1$//$NON-NLS-2$//$NON NLS-3$//$NON NON-NLS-4$//$NON NLS-5$
}
返回值(temp+“\u25b4”).replaceAll(\u25ba212(\n“+ratioRam+“\u25b4)”,“\u25ba222$1”);
}
编辑:我认为节在这里不那么重要,因为我们知道这一节的价值。如果节很重要,那么。在调试模式中也有 散列,hash32,value和value中的用于[0]-->0,用于[1]-->0,用于[2]-->0试试看

String a=val[0]; //Ensure value is 000 not OOO 
a = a.replaceAll("[\n\r]", "");
if(a.trim().equals(b.trim())){
 //toDO
}

它们并不完全相等,我假设一定有一些你不考虑的空间。顺便问一下,如果没有执行
块,你怎么知道
?它所做的只是创建一个从未使用过的字符串对象。@yshavit我知道它,因为在调试模式下它不会创建任何名为iOkay的变量。你能确认吗e> 每个字符串的字符[]
是否相同?
string.tocharray()
。也可能是调试器从未显示
i
变量,因为它一创建就超出范围。也就是说,如果调试器位于
String i=…
行,则
i
还不存在。然后前进一行,则
i
已超出范围。如果有疑问,请输入一个print语句。如果您打印
i
,编译器不允许删除该语句。这是一个随机猜测。它甚至可能是对的……但我们需要更好地理解“部分”是第一位的。猜测是“不好的”。IMHO…@iwishicoldthinkofagood如果您的意思是一件事,为什么要说另一件事?
String a=val[0]; //Ensure value is 000 not OOO 
a = a.replaceAll("[\n\r]", "");
if(a.trim().equals(b.trim())){
 //toDO
}