difference between & and && for boolean

Core Java chapter3.5.3讲到,

 

&和|应用于boolean运算与&&和||的运算类似,只是不按 “短路”方式计算。

 

用Bytecode Outline 插件便可以看到执行的差别

 

Bit And

 

public class TestBitAnd {
    
    public static void main(String[] args) {
        boolean a = false;
        boolean b = true;
        
        boolean bitAnd  = a&b;
        //System.out.println(a +"&" +b+":" + bitAnd);
    }
}

//bytecode
/*
public class corejava_ch3_5_3/TestBitAnd {

  // compiled from: TestBitAnd.java

  // access flags 0x1
  public <init>()V
   L0
    LINENUMBER 21 L0
    ALOAD 0
    INVOKESPECIAL java/lang/Object.<init>()V
    RETURN
   L1
    LOCALVARIABLE this Lcorejava_ch3_5_3/TestBitAnd; L0 L1 0
    MAXSTACK = 1
    MAXLOCALS = 1

  // access flags 0x9
  public static main([Ljava/lang/String;)V
   L0
    LINENUMBER 24 L0
    ICONST_0
    ISTORE 1
   L1
    LINENUMBER 25 L1
    ICONST_1
    ISTORE 2
   L2
    LINENUMBER 27 L2
    ILOAD 1                          
    ILOAD 2                          
    IAND                              //载入两个变量,进行运算
    ISTORE 3
   L3
    LINENUMBER 29 L3
    RETURN
   L4
    LOCALVARIABLE args [Ljava/lang/String; L0 L4 0
    LOCALVARIABLE a Z L1 L4 1
    LOCALVARIABLE b Z L2 L4 2
    LOCALVARIABLE bitAnd Z L3 L4 3
    MAXSTACK = 2
    MAXLOCALS = 4
}*/

 

Logical And

public class TestLogicalAnd {
    
    public static void main(String[] args) {
        boolean a = false;
        boolean b = true;
        
        boolean logicalAnd = a&&b;
        //System.out.println(a +"&&" +b+":" + logicalAnd);
    }
}

//bytecode
/*
 public class corejava_ch3_5_3/TestLogicalAnd {

  // compiled from: TestLogicalAnd.java

  // access flags 0x1
  public <init>()V
   L0
    LINENUMBER 21 L0
    ALOAD 0
    INVOKESPECIAL java/lang/Object.<init>()V
    RETURN
   L1
    LOCALVARIABLE this Lcorejava_ch3_5_3/TestLogicalAnd; L0 L1 0
    MAXSTACK = 1
    MAXLOCALS = 1

  // access flags 0x9
  public static main([Ljava/lang/String;)V
   L0
    LINENUMBER 24 L0
    ICONST_0
    ISTORE 1
   L1
    LINENUMBER 25 L1
    ICONST_1
    ISTORE 2
   L2
    LINENUMBER 27 L2
    ILOAD 1
    IFEQ L3                              //判断是否为0,是则goto L3
    ILOAD 2
    IFEQ L3
    ICONST_1
    GOTO L4
   L3
    ICONST_0
   L4
    ISTORE 3
   L5
    LINENUMBER 29 L5
    RETURN
   L6
    LOCALVARIABLE args [Ljava/lang/String; L0 L6 0
    LOCALVARIABLE a Z L1 L6 1
    LOCALVARIABLE b Z L2 L6 2
    LOCALVARIABLE logicalAnd Z L5 L6 3
    MAXSTACK = 1
    MAXLOCALS = 4
}
 */
 

 

探索Aviator:轻量级Java动态表达式求值引擎的使用指南 本文探讨了Aviator引擎在Java中的动态表达式求值功能,重点介绍其在复杂条件判断和代码可维护性方面的优势。Aviator通过允许开发者以简洁的方式编写逻辑,提高了代码的灵活性和可读性,减少了冗余代码的出现。文章还提供了示例代码,展示了如何在项目中有效应用Aviator,使其成为开发者实现动态逻辑处理的强大工具。总之,Aviator为Java编程带来了新的可能性,值得每位开发者去探索和实践。 阅读详情

相关推荐

3d 子部件挖孔

子部件挖孔

jacke121的专栏 52

Unsupported class file major version 61

Unsupported class file major version 61

m0_59281987的博客 2034

图漾Tycamera SDK示例程序解析(停止维护)

功能:配置自定义协议设备实现流程1. 重置设备状态 (device_status_init)2. 遍历所有源配置3. 映射源名称到组件ID4. 根据组件ID配置参数5. 处理特殊参数(AEC ROI、触发模式、帧率控制等)6. 应用配置到设备7. 返回配置结果if(comp!// 处理彩色相机的AEC ROI// ... 设置AEC ROI// 配置其他参数。

折翼孤雁 883

初识java一见钟情

Java基本知识概括01 认识Java 一.快捷键 1.windows快捷键 Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+X 剪切 Ctrl+A 全选 Windows+r CMD运行 2.IDEA快捷键 Alt+ins 快速生成代码(GET+SET方法,重写重载等…) Ctrl+/ 注释单行 Shift+F10 快速运行 Ctrl+alt+L 格式化代码 Ctrl+alt+向上箭头 复制当前...

这个人很懒,懒得CV 203

1104全部报表版本号-银监会报表

G4B_Ⅲ(a)X1《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(现期风险暴露法)(第一档)》G4B_Ⅲ(b)X1《与非中央交易对手的证券融资交易对手信用风险违约风险计算表(权重法)(第一档)》G4B_Ⅲ(a1)X2《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(标准法)(第二档)》Ⅲ(a)X2《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(现期风险暴露法)(第二档)》Ⅲ(a1)X1《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(标准法)(第一档)》

数字化老司机 6289

Visionpro 使用CogPMAlignTool工具提取匹配轮廓点

【代码】Visionpro 使用CogPMAlignTool工具提取匹配轮廓点。

weixin_43947315的博客 2091

boolean出现false的所有情况

boolean在空字符串,null,undefined, 0 ,NaN这六种情况下返回为false,其他情况都返回true。

Sapling 3922

从爆仓到流畅发货:我们如何用EIQ分析给跨境小电商仓库做了一次‘体检’与‘手术’

本文分享了如何通过EIQ分析工具为跨境小电商仓库进行诊断与优化,从爆仓危机到流畅发货的实战经验。通过ABC分类法、动态路径算法等策略,拣货效率提升40%,错发率降低91%,日均处理能力翻倍。文章为小电商提供了轻量级工具选择和关键指标监控的实用建议。

weixin_28707739的博客 397

Mistral Large 4 vLLM部署教程:Docker一键启动1T大模型,官方推荐的生产级推理方案

Mistral Large 4(Mistral-Large-4-1T-A52B)是一款约 1 万亿参数的原生气多模态 MoE 大模型,vLLM 是官方推荐的生产级推理方案。本教程带你用 Docker 完成 Mistral Large 4 的 vLLM 部署全流程:一键启动服务、关键参数解析、推理模式配置,以及让吞吐量提升近 2 倍的投机解码加速。🚀 ## 模型概览:Mistral Large

gitblog_00832的博客 187

Innovus Function ECO实战:5步搞定数字后端设计中的网表修正(含Calibre LVS验证技巧)

本文提供了一份完整的Innovus Function ECO实战指南,详细解析了数字后端设计中网表修正的五步流程。从理解Function ECO概念、准备关键文件,到在Innovus中执行逻辑比对、自动布线及GUI检查,并重点攻克了ECO后Calibre LVS验证的难点与调试技巧,帮助工程师高效、精准地完成流片前的设计微调。

day7的博客 948

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

如果你仅仅是跑个先进工艺的flow,不懂先进工艺在数字IC后端实现上的不同点,为何有这样的不同点,针对这些不同之处后端实现阶段如何考虑它们,那么你等于0经验!大家可以针对本文所列的要点进行复盘,如果这些都搞透彻了,你就可以大胆把T12 nm的A72和A55项目写到你的简历中。T12这个工艺也是支持Preferred和Non-prefered两个方向来完成routing的,但是它对它们的最小线宽和最小线间距提出了更严格的要求。所有各个子模块的形状,彼此之间的间距都是有严格的要求。为何要有P48这一层?

weixin_37584728的博客 8338

短期内快速掌握Python编程基础

本文从工程实践视角出发,对 Python 基础知识进行了系统梳理与总结。内容涵盖运行环境、基础语法、控制流、函数、字符串处理以及列表、字典、集合等常用数据结构,并结合可运行示例,帮助读者建立清晰、连贯的语言认知体系。文章不追求速成,而强调理解与动手实践,适合初学者入门,也可作为有编程经验读者回顾 Python 基础的参考材料,为后续深入学习与实际应用打下稳定基础。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 14万+

声纹识别实战:用Python从零搭建一个简易声纹验证系统(附完整代码)

本文是一份详细的声纹识别实战指南,教你使用Python从零搭建一个简易的声纹验证系统。文章涵盖了从音频采集、预处理、MFCC特征提取,到基于高斯混合模型(GMM)的建模与验证全流程,并提供了完整的代码实现,帮助开发者快速掌握这项生物特征识别核心技术。

ik6789012的博客 231

Cytoscape.js 集合(Collection)完全指南:节点边集合的核心概念、不可变性与函数式 API

在 Cytoscape.js 中,`collection`(集合)是承载图中节点(nodes)与边(edges)的核心数据结构,几乎所有图操作——从查询、遍历到图算法——都建立在集合之上。本文以 [documentation/md/collection/collection.md](https://link.gitcode.com/i/8ecbf63b7d64f757d84ae6291274c45

gitblog_00932的博客 593

FAA和EASA在机载电子硬件适航中的发展历史与差异

FAA和EASA在机载电子硬件的适航审查中虽然存在一些差异,但通过近年来的合作,这些差异正在逐步缩小。两者通过。

qq_41854911的博客 745

python中使用squarify包可视化treemap图:为treemap图添加标题并自定义标题的字体大小、自定义设置treemap中标签字体的大小、添加数值数值标签、自定义设置边框的色彩

python中使用squarify包可视化treemap图:treemap将分层数据显示为一组嵌套矩形自定义设置每一个数据格的颜色、添加数值数值标签、自定义设置边框的色彩、自定义设置边框线条的粗细、为treemap图添加标题并自定义标题的字体大小、自定义设置treemap中标签字体的大小

data+scenario+science+insight 1061

Python

非法标识符: Python中单行注释以 # 开头多行注释可以用多个 # 号,还有 ''' 和 """: python中数字有四种类型:整数、布尔型、浮点数和复数。 缩进相同的一组语句构成一个代码块,我们称之代码组。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。我们将首行及后面的代码组称为一个子句(clause)。 print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="": 在

qq_38045259的博客 755

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)...

现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python相关问题都会整理在这里 (一)python数据类型问题list 1,Python3 数据类型有哪些? Number 数字String 字符串List 列表Tuple 元组Dict...

weixin_34194702的博客 419

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JSON Schema模块化实践:契约驱动开发解决数据一致性难题

在微服务架构和大型前后端项目中,数据格式不一致是常见的工程痛点。JSON Schema作为一种描述JSON数据结构的标准,通过定义数据的类型、格式、约束和关系,为数据交换提供了明确的契约。其技术价值在于将隐式的数据约定提升为显式、可验证、可共享的规范,从而确保跨模块、跨系统协作时数据的一致性和可靠性。在工程实践中,结合Ajv等验证工具和json-schema-to-typescript等代码生成器,可以实现从Schema定义到类型安全的全流程自动化。这种契约驱动开发模式,特别适用于API通信、配置管理和数据

weixin_30718391的博客 516

10分钟跑通 kubernetes Python 客户端:集群资源自动管理

每次要把同一套 Deployment 在多个环境里扩缩容、核对状态,你都得手工敲一遍 kubectl。命令写进 shell 脚本不难,难的是把这类操作接进 CI 流水线或单元测试里。kubernetes 官方 Python 客户端(kubernetes Python client)让你用几行 Python 代码描述对 Pod、Deployment 等集群资源的操作,并能被其他程序直接 import

gitblog_00258的博客 141

第九章 JAVA常用类

String:字符串,使用一对" "引起来表示。①String声明为final的,不可被继承②String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小。③String内部定义了final char[] value用于存储字符串数据(JDK 9及以后是 byte[] value)④String:代表不可变的字符串序列。简称:不可变性。体现:对字符串重新赋值;对字符串进行连接操作;

xunyan6234的博客 424

pandas 1.2.0 版本发布全解析:重复标签控制、可空浮点类型与 I/O 能力全面升级

> 本文基于本仓库官方发布说明 [doc/source/whatsnew/v1.2.0.rst](https://link.gitcode.com/i/a82a077a91f6595377565567159d91db)(pandas 1.2.0,发布于 2020 年 12 月 26 日)整理撰写,并结合仓库内核心源码(如 [pandas/core/flags.py](https://link.gi

gitblog_00797的博客 240

MuleSoft与大语言模型企业级集成实战指南

企业AI落地的核心挑战并非模型能力,而是如何将大语言模型(LLM)的语义理解力安全、可靠、可审计地嵌入现有业务系统。这涉及语义到规则的确定性映射、数据主权保障、故障隔离与容错机制等关键工程问题。MuleSoft作为成熟的企业级API编排平台,凭借DataWeave数据转换、Runtime Fabric私有化部署、Policy治理框架及强契约式接口设计,为LLM提供了不可或缺的‘企业适配层’。本文聚焦LLM与MuleSoft协同落地的真实场景,涵盖提示工程版本化、LLM输出净化、带状态会话管理、灰度发布策略及

cuanji3287的博客 368

Java 布尔值(Boolean)

Java中布尔值(Booleans)表示以下两个值之一:true或false。本文主要介绍布尔值(Boolean)的使用,boolean与Boolean的区别,以及相关的示例代码。 原文地址:Java 布尔值(Boolean)

亮亮的专栏 4224

Hessian 协议解析

Hessian 是由 caucho 提供的一个基于 binary-RPC 实现的远程通讯 library 。它是高性能二进制协议,支持很多种语言,众所周知大名鼎鼎的开源rpc的框架中都有使用。 以下内容的理解均来自官网1.0.2协议,为降低理解上的偏差会大量使用源引用。 目录 1. 设计目标 2. 数据类型 2.1 null 2.2 boolean 2.3 int 2.4 long...

布道 5290
上一篇: Fmpp+Ant生成类文件
下一篇: link with editor
JasonRight
博客等级 码龄19年 1粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值