是否可以使用逻辑运算符“!”在包含true或false值的对象上?专门针对这样的对象?
public class Briefcase {
private final double amount;
private final String model;
private boolean removed = false;
private String face;
public Briefcase(double amount, int face, String model) {
this.face = Integer.toString(face);
this.amount = amount;
this.model = model;
}
public double getAmount() {
return amount;
}
@Override
public String toString() {
return face;
}
public String getModel() {
return model;
}
public void remove() {
removed = true;
face = "X";
}
public boolean isRemoved() {
return removed;
}
}
然后像这样使用它
Briefcase[] cases = new Briefcase[];
if (!cases[5].isRemoved()) { .... block of code}
可能吗?如果是这样,为我提供了该文档的链接以及其他一些例子,我觉得这很奇怪,同时也很有趣
答案 0 :(得分:1)
例程isRemoved
仅存在于Briefcase
对象上,不在阵列上。要使用否定操作!,您必须尝试类似以下内容
for(BriefCase c: cases) {
if (!c.isRemoved()) {
// block of code
}
}
答案 1 :(得分:0)
是的,你可以,但不是代码中显示的数组,而是!case.isRemoved()
。
这里的要点是!(否定操作符)适用于布尔操作数。
只要操作数表达式解析为布尔!,这将有效。
答案 2 :(得分:0)
是的。 boolean
是一种原始类型,但我发现使用!
并不奇怪。
答案 3 :(得分:0)
我不确定你是否错误或设计了数组中的索引..但这肯定会有效:
if(!cases[i].isRemoved()){ .... block of code}
其中i是索引。
答案 4 :(得分:0)
在这种情况下!否定调用的值isRemoved() 您可以在此处查看运算符列表:http://www.java-tips.org/java-se-tips/java.lang/what-is-java-operator-precedence.html
还有关于你说不能写的答案:
Briefcase[] cases = new Briefcase[];
if (!cases[5].isRemoved()) { .... block of code}
[]和。 ()运算符具有相同的优先级。
[]索引运算符将首先执行,因为该行是从左到右计算的,因此检索一个可以调用isRemoved()方法的公文包实例。