您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

按位运算符如何在Java中处理布尔值

按位运算符如何在Java中处理布尔值

booleanJava 中没有按位操作。

&并且|不在Java中执行按位运算,而是在逻辑运算中进行操作(如 §15.22.2中所指定)

请注意, 运营商用于位运算,但这些只有在两个操作数都是一个类型,可转换为一个整数类型的应用(即bytecharshortintlong和各自的包装)。

由于这篇文章引起了一些热烈的讨论,我想澄清一下我对“按位”运算与“逻辑”运算之间的区别的坚持。

首先: ,在 某种程度上 ,这两个操作将完全一样地工作,除了它们的输入大小(由于优化,它们甚至可能是相同的)。

但是 ,这里至少有3个级别:

Java语言规范使用两个值定义boolean原始类型true``false。它并 为这些值定义的数值并没有将其转换为数值型,反之亦然没有直接的方法(见的最后一句§4.2.2

Java虚拟机规范定义了该boolean类型,但是对此类型的支持很少。

它还说明了有关转化的信息

Java虚拟机boolean使用1表示true和0表示false对数组组件进行编码。在Java编程语言boolean值由编译器映射到Java虚拟机类型的值的情况下int,编译器必须使用相同的编码。

最简单的 到fullfil在JVM这一要求的方式显然是让1true0是假的,让转换操作是一个空操作。这也是最可能的实现,但 是唯一正确的实现。

这变化很大,但是大多数cpu不支持某种boolean类型(为什么要这样做?),因此boolean此处的操作将使用常规的按位操作。

java 2022/1/1 18:25:32 有403人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶