我在比较布尔值时面临一个问题,我希望循环进入块内但不进入块。
else if (!(keyCompare.contains(compareKey)) || (save == true)) {
//do something
}
此处!(keyCompare.contains(compareKey)
将返回false。我看到向量keyCompare没有compareKey或者如果save为true则输入if循环,但不是。
我做错了什么?
答案 0 :(得分:0)
有三种可能性:
调试器会告诉您确切的可能性。这里没有任何讨论的必要 - 这些只是三种可能性。
答案 1 :(得分:0)
假设您有一个类如下:
static class Contents {
private String contents;
public Contents(String contents) {
this.contents = contents;
}
}
编写以下代码:
Vector<Contents> v = new Vector<>();
v.add(new Contents("a"));
System.out.println("Contains a: "+v.contains(new Contents("a")));
将产生以下输出:
Contains a: false
但是将equals
方法添加到Contents
类中,如下所示:
public boolean equals(Object obj) {
return Objects.equals(this.contents, ((Contents)obj).contents);
}
突然产生以下结果:
Contains a: true
更好的实施可能如下所示:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass())return false;
final Contents other = (Contents) obj;
if (!Objects.equals(this.contents, other.contents))return false;
return true;
}