0

是否可以使用逻辑运算符“!” 在具有 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}

那可能吗?如果是这样,请为我提供指向该文档和其他示例的链接,我觉得这很奇怪同时很有趣

4

5 回答 5

1

该例程isRemoved 仅存在于Briefcase对象上,而不存在于数组上。使用取反操作您必须尝试以下操作

for(BriefCase c: cases) {
    if (!c.isRemoved()) {
        // block of code
    }
}
于 2011-09-13T09:54:00.940 回答
0

是的,你可以,但不是代码中显示的数组,而是!case.isRemoved().

这里的重点是!(negate operator)适用于布尔操作数。

只要操作数表达式解析为布尔值这会奏效。

于 2011-09-13T09:52:50.660 回答
0

这是。boolean是一种原始类型,但使用!.

于 2011-09-13T09:53:37.717 回答
0

在这种情况下 !否定调用 isRemoved() 的值您可以在这里查看运算符列表:http ://www.java-tips.org/java-se-tips/java.lang/what-is-java-运算符-precedence.html

另外关于说你不能写的答案:

Briefcase[] cases = new Briefcase[];
if (!cases[5].isRemoved()) { .... block of code}

[] 和 。() 运算符具有相同的优先级。

[] 索引运算符将首先执行,因为该行是从左到右评估的,因此检索一个公文包实例,您可以在该实例上调用 isRemoved() 方法。

于 2011-09-13T10:00:45.790 回答
0

我不确定您是错误还是设计将索引留在数组中..但这肯定会起作用:

if(!cases[i].isRemoved()){ .... block of code}

其中 i 是索引。

于 2011-09-13T09:55:58.513 回答