gpt4 book ai didi

java - Java算子的疑惑

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:14 24 4
gpt4 key购买 nike

我正在查看一些 GWT 类的代码,可耻的是,我无法理解这部分代码:

private void toggleHover() {
// Toggle hovering.
int newFaceID = getCurrentFace().getFaceID() ^ HOVERING_ATTRIBUTE;

// Remove disabled.
newFaceID &= ~DISABLED_ATTRIBUTE;
setCurrentFace(newFaceID);
}

我不太了解java运算符,所以,我的问题是:

到底发生了什么:

a) getCurrentFace().getFaceID() ^ HOVERING_ATTRIBUTE

b) newFaceID &= ~DISABLED_ATTRIBUTE;

& 是按位与,^ 是按位异或运算符。这就是我所知道的。但是,我不明白 ~DISABLED_ATTRIBUTE 以及在评估这些值时发生了什么。

这段代码来自 GWT com.google.gwt.user.client.ui.CustomButton 类。

提前致谢。

最佳答案

带有 ^ 的行正在切换 HOVERING_ATTRIBUTE 代表的位。如果该位为 1,则将其设为 0;如果该位为 0,则将其设为 1。

带有 &= ~ 的行正在清除 DISABLED_ATTRIBUTE 代表的位。无论之前该位的值是多少,该位现在都将为 0。

~ 单独反转 DISABLED_ATTRIBUTE 的所有位,因此结果就是我们所说的适用于 ANDing 的位掩码:DISABLED_ATTRIBUTE 的位 代表 变为 0,所有其他位变为 1。因此,如果您与此掩码的任何值进行 AND,结果是该位将被清除,而所有其他位将保持不受影响。

关于java - Java算子的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8733138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com