gpt4 book ai didi

java - &、|、^ 是按位运算符还是逻辑运算符?

转载 作者:搜寻专家 更新时间:2023-11-01 03:58:46 27 4
gpt4 key购买 nike

首先我了解到&, |, ^ 是按位运算符,现在有人用 提到它们是逻辑运算符&&, ||,我完全糊涂了——同一个运算符有两个名字?已经有了逻辑运算符&&||,那为什么还要用&|^?

最佳答案

Java 运算符 &|^ 是位运算符或逻辑运算符……取决于操作数的类型。如果操作数是整数,则运算符是按位的。如果它们是 boolean 值,则运算符是合乎逻辑的。

这不仅仅是我说的。 JLS 也以这种方式描述这些运算符;见JLS 15.22 .

(这就像 + 意味着加法或字符串连接......取决于操作数的类型。或者就像“玫瑰”意味着花或淋浴附件。或者“猫”的意思是毛茸茸的动物或 UNIX 命令。单词在不同的上下文中有不同的含义。编程语言中使用的符号也是如此。)


There are already logical operators &&, ||, why use &, |, ^?

对于前两个,这是因为运算符在何时/是否计算操作数方面具有不同的语义。在不同的情况下需要这两种不同的语义;例如

    boolean res = str != null && str.isEmpty();

对比

    boolean res = foo() & bar();  // ... if I >>need<< to call both methods.

^ 运算符没有短路等效项,因为它根本没有意义。

关于java - &、|、^ 是按位运算符还是逻辑运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597978/

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