栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

boolean
Java 中没有按位操作。

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

  • &
    是逻辑AND(
    true
    如果且仅当两个参数都为时,它将求和
    true
  • |
    是逻辑“或”(
    true
    如果且仅当至少一个参数为时,它将求和
    true
    )。

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

byte
char
short
int
long
和各自的包装)。

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

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

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

  • Java语言

Java语言规范使用两个值和定义

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

  • Java虚拟机

Java虚拟机规范
定义了该

boolean
类型,但是对此类型的支持很少。

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

Java虚拟机

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

最简单的 到fullfil在JVM这一要求的方式显然是让

1
true
0
是假的,让转换操作是一个空操作。这也是最可能的实现,但
不一定 是唯一正确的实现。

  • 硬体

这变化很大,但是大多数CPU不支持某种

boolean
类型(为什么要这样做?),因此
boolean
此处的操作将使用常规的按位操作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407195.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号