public String getName() {
return new String("foobar");
}
if(getName() != "foobar2") {
//Never gets executed, it should, wtf!.
}
if(!getName().equals("foobar2")) {
//This works how it should.
}
所以是的,我的问题很简单..为什么!=
与!equals()
aka ( not Equals
) 的行为不同。
我看不出任何一个失败的逻辑原因,两者在我的脑海中都是相同的代码,WTH。
查看 java 运算符 http://download.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
你可以清楚地看到平等 ==
!=
是相等运算符,当然我通常!=
只在数字上使用.. 但是我的思绪开始徘徊,为什么它不起作用String
?
编辑: 这看起来更像是实际问题..
for (ClassGen cg : client.getClasses().values()) {
final ConstantPoolGen cp = cg.getConstantPool();
if(cp.lookupInteger(0x11223344) != -1) {
for (Method m : cg.getMethods()) {
System.out.println("lots of class spam");
if(m.getName() != "<init>") continue;
System.out.println("NEVER GETS HERE, 100% SURE IT HAS CONSTRUCTOR LOL");
}
}
}