Java 关于这个布尔方法,我说的对吗?

Java 关于这个布尔方法,我说的对吗?,java,return,Java,Return,我正在研究如何用Java来完善这个动作。我找到的代码如下所示: public void update() { for (int i = 0; i < AMOUNT_KEYS; i++) { keysLast[i] = keys[i]; ////Sets buttons pressed this frame equal to the lastKey array } for (int i = 0; i < AMOUNT_BUTTONS; i+

我正在研究如何用Java来完善这个动作。我找到的代码如下所示:

public void update() {

    for (int i = 0; i < AMOUNT_KEYS; i++) {
        keysLast[i] = keys[i];  ////Sets buttons pressed this frame equal to the lastKey array
    }

    for (int i = 0; i < AMOUNT_BUTTONS; i++) {
        buttonsLast[i] = buttons[i];    //Sets buttons pressed this frame equal to the lastKey array
    }
}

//keys Methods
public boolean isKeyPressed(int keycode) {
    return keys[keycode];
}

public boolean isKeyUp(int keycode) {
    return !keys[keycode] && keysLast[keycode]; //Does not return 2 values, it returns true if these conditions are met?
}

public boolean isKeyDown(int keycode) {
    return keys[keycode] && !keysLast[keycode];
}
在我看来,方法
isKeyDown
iskeydup
返回两个布尔值。我认为那是不可能的。但是我测试了它,它看起来像一个if语句?。那么,如果return命令后面的语句为true,它将返回true


我说得对吗?如果是的话,为什么会这样?有没有我能读到的文档?

首先,你的代码编译了吗?以下内容仅在数组返回
布尔值时有效

return !keys[keycode] && keysLast[keycode];

如果keys[keyCode]为真,那么!keys[KeyCode]将为false,语句将返回false,因为表达式的其余部分不需要求值。

查找布尔逻辑和逻辑and运算符。我不知道你可以这样做,因为我不知道,向下投票似乎有点苛刻。我会查一查的我不是反对票,你让医生看了,所以我不是故意指你的泰勒,对不起!我只是不喜欢被否决的票,很难得到代表,所以我把它加入了评论中。我查了一下,现在明白了。事实上,这是一个整洁的功能!ThanksIt编译。因此,在isKeyUp方法中,它返回“!keys[keycode]&&keysLast[keycode]”。因此,如果关键点在这一帧上,而在上一帧下,则在这两个帧上都将返回true。由于“!”的原因,如果“!”不存在,它将返回false&&true。我知道它是如何工作的,我只是不知道你可以这样写,所以当你返回一个布尔值时,你可以做语句?是的<代码>如果(a&&b)
布尔结果=a&&b;如果(结果)
很好,就不一定那么直观了。还要记住,
&
是短路,
&
不是短路。对于
a和
b,如果
a
false
,则不会计算
b。但是对于
a&b
,无论
a
如何,都将对
b
进行评估。我也不知道存在这种情况!我会接受你的回答,因为问题已经在评论中得到了回答!谢谢
return !keys[keycode] && keysLast[keycode];