Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逻辑补码算子?_Java_Oop_Boolean_Boolean Logic_Unary Operator - Fatal编程技术网

Java 逻辑补码算子?

Java 逻辑补码算子?,java,oop,boolean,boolean-logic,unary-operator,Java,Oop,Boolean,Boolean Logic,Unary Operator,是否可以对值为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 mod

是否可以对值为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}

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

是的,您可以,但不是使用代码中所示的数组,而是
!case.isRemoved()

这里的要点是!(求反运算符)适用于布尔操作数


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

是的
boolean
是一种基本类型,但我看不出使用
有什么奇怪的地方
例程
被删除
仅存在于
公文包
对象上,而不存在于数组上。使用求反操作您必须尝试以下方法

for(BriefCase c: cases) {
    if (!c.isRemoved()) {
        // block of code
    }
}

我不确定您是由于错误还是设计而将索引留在数组中。。但这肯定会奏效:

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

其中i是索引。

在这种情况下!否定调用isRemoved()的值 您可以在此处查看操作员列表:

关于你不能写的答案:

Briefcase[] cases = new Briefcase[];
if (!cases[5].isRemoved()) { .... block of code}
[]和。()运算符具有相同的优先级


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

问题是您正在询问一个有关公文包数组的问题。。。一件也没有。你期望它如何工作?编码和执行所需的时间比在这里提问并静坐下来所需的时间要少。为什么不做一个实验主义者呢?让JDK告诉你正确的答案。没有任何方法和逻辑可以将其应用于ArrayGate操作符,意思是相反的?如果cases[i].isRemoved包含false,则表示为!假的?还是不假?爪哇卡宝贝,为什么数组?它不是应用于数组中单个元素的
布尔
成员吗?那么这意味着什么呢?你能提供更多的例子吗?一个比这更基本的方法?如果我指的是在对象上的基本用法,而不是基本用法,那么您不能在对象上使用它<代码>案例[5]。isRemoved()
计算结果为(基本)布尔值,并且
应用于结果。就像是
!anyBoolean
(更基本)。正如Suraj指出的,你可以在表达式中添加一对假想的braketsobject@Andrew,则
cases
变量是一个数组。你也可以写
!案例[5]。isRemoved()
!案例[5]。isRemove()的意思是什么?它的布尔值的对立面?否定运算符的意思是它的对立面?如果cases[i].isRemoved包含false,则表示为!假的?还是不假?是的。“cases[i].isRemoved包含false这意味着!false”是正确的