【面试一:|和||、和区别】

news2024/9/30 7:25:44

相同点:

  • ||和&&都是逻辑运算符,而|和&是位运算符。位运算符的优先级要比逻辑运算符的优先级高。

&和&&的区别

  • &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true。否则,只要有一方为false,结果就为false.
  • &&为短路运算符。即为如果第一个表达式为false,则不再计算第二个表达式。例如,下面代码可以看出a > 1为false,则右边的表达式没有计算,所以输出结果为b = 2.
        int a = 1;
        int b = 2;
        if (a > 1 && ++b > 2) {
            System.out.println("进入if循环");
        }
        System.out.println("a = " + a + ", b = " + b);
输出结果:a = 1, b = 2
  • &为位运算符。符号两边的表达式一定都会运算。例如,下面代码可以看出a > 1为false,则右边的表达式也会正常运算,因此输出结果b = 3.
        int a = 1;
        int b = 2;
        if (a > 1 & ++b > 2) {
            System.out.println("进入if循环");
        }
        System.out.println("a = " + a + ", b = " + b);
输出结果:a = 1, b = 3
  • &为位运算符。当&操作符两边的表达式不是boolean类型时,&表示按位与操作。运算规则(有0则为0)
    &为位运算符

|和||的区别

  • |和||都可以用作逻辑或的运算符,表示逻辑或(or),当运算符两边的表达式的结果其中一个为true时,整个运算结果为true。
  • ||是短路运算符。即如果||左边的表达式结果为true,右边的表达式就会被短路掉,不会参与运算。例如,下面代码,左边a >= 1满足,则不再运算右侧的表达式,所以输出结果b = 2。
        int a = 1;
        int b = 2;
        if (a >= 1 || ++b > 2) {
            System.out.println("进入if循环");
        }
        System.out.println("a = " + a + ", b = " + b);
输出结果:进入if循环
		a = 1, b = 2
  • |为位运算符。符号两边的表达式一定都会运算。例如,下面代码可以看出a >= 1为true,则右边的表达式也会正常运算,因此输出结果b = 3.
        int a = 1;
        int b = 2;
        if (a >= 1 | ++b > 2) {
            System.out.println("进入if循环");
        }
        System.out.println("a = " + a + ", b = " + b);
输出结果:进入if循环
        a = 1, b = 3
  • |还可以做位运算符,当|操作符两边的表达式不是boolean类型时,|表示按位或操作。运算规则(有1则为1)
    |做位运算符

总结:

||和&&是短路运算符,进行的计算较少,因此在代码运行过程中效率更高,在后续开发中更推荐使用短路运算符。

备注:

在回答面试官的问题时,可以按照上面的逻辑。先分析相同的地方,再分析不同的地方,最后进行总结。在回答问题时,可以加一个例子,显得自己理解得比较透彻、清晰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

尚医通(二十五)就医提醒和预约统计

目录一、就医提醒1、搭建定时任务模块二、后台管理系统-预约统计功能1、开发每天预约数据接口2、封装远程调用接口3、搭建统计分析模块4、整合统计功能前端一、就医提醒 我们通过定时任务,每天8点执行,提醒就诊 1、搭建定时任务模块 (1&…

Python IDE:对于 Python 初学者来说,最好的 IDE 是什么?

Python 是科技界最简单、使用最广泛的编程语言之一。它是一种高级通用编程语言,强调代码可读性并使用面向对象的方法。Python可以用来完成很多任务,包括网站开发、软件开发、 自动化 和数据分析 专业开发人员使用Python开发各种流行的软件程序&#xff0…

【C++】list 相关接口的模拟实现

list 模拟实现回顾准备构造析构函数的构造构造方法析构方法赋值运算符重载容量相关接口元素获取元素修改相关接口push 、popinserterase清空交换迭代器 **(重点)迭代器基本概念迭代器模拟实现回顾 在上一篇博客中我们大致了解了 list 相关接口的使用方法…

零基础、非计算机系学Python该如何上手?

首先我觉得要放平心态,不用过多去纠结是不是专业出身这回事。 想学那就认真去学,我们最终目标是掌握Python这门技能。 非计算机专业同时零基础,想自学Python该如何上手?分享我自学Python的几点建议吧。 1、重视基础 Python是一…

《数据库系统概论》学习笔记——第七章 数据库设计

教材为数据库系统概论第五版(王珊) 这一章概念比较多。最重点就是7.4节。 7.1 数据库设计概述 数据库设计定义: 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构&#x…

TIA博途Wincc中自定义配方画面的具体方法示例

TIA博途Wincc中自定义配方画面的具体方法示例 前面和大家分享了通过TIA博途自带的配方视图组态配方功能的具体方法,具体内容可参考以下链接中的内容: TIA PORTAL wincc中配方recipe组态及配方视图的使用方法 但是,使用配方视图的时候感觉不是很方便,同时一部分使用人员也感…

机加行业MES解决方案,助力企业打造数字化透明车间

机械加工行业的主要原材料占整个生产物料成本的95%~99%,以挖掘机为例,原材料有各种规格的钢板、焊丝、焊条、油漆以及各种气体等,其中主要原材料是钢板,占原材料比率的98%以上。 因此机械加工mes的原材料管理是机械加工行业信息化…

【GO】30.grpc拦截器源码分析

一.服务端拦截器server端原理serverOptions配置中的Interceptor,其中unary为一元拦截器,stream为流式拦截器。本文只看一元式拦截器,即最常见的客户端向服务器发送单个请求并返回单个响应。创建一个新的grpc server时,这个方法将拦…

什么?你还不明白什么是ClassLoader?不如试试从JVM来入手ClassLoader是什么玩意吧!

文章目录环境配置篇如何执行一个文件配置JDK环境(简述)Java文件执行流程编译加载JVM环境准备BootStrapClassLoadersun.misc.laucherAppClassLoader解释执行回收ClassLoader讲解主要的三个ClassLoader双亲委派模型loadClass方法讲解自定义ClassLoaderJVM内…

多芯片设计 Designing For Multiple Die

Why a system-level approach is essential, and why its so challenging作者:Ann MutschlerAnn Mutschler is executive editor at Semiconductor Engineering.将多个裸片或芯粒集成到一个封装中,与将它们放在同一硅片上有着很大的区别。在同一硅片上&a…

断点续传实现

断点续传 1、 什么是断点续传 通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了没有上…

分布式之ZAB协议

写在前面 假定我们现在使用zk执行了如下的指令: [zk: 192.168.0.10:2181(CONNECTED) 0] create /dongshidaddy 123 Created /dongshidaddy [zk: 192.168.0.10:2181(CONNECTED) 1] create /dongshidaddy/mongo 456 Created /dongshidaddy/mongo假定因为节点故障最终…

Python曲线肘部点检测-膝部点自动检测

文章目录一. 术语解释二. 拐点检测肘部法则是经常使用的法则。很多时候,可以凭人工经验去找最优拐点,但有时需要自动寻找拐点。最近解决了一下这个问题,希望对各位有用。一. 术语解释 **肘形曲线(elbow curve)**类似人胳膊状的曲线&#xff…

Echarts 每个柱子一种渐变色的象形柱状图

第023个点击查看专栏目录本示例是解决每个柱状图的每一个柱子都呈现一种渐变色,每个柱子的颜色都不同。这里同时采用了象形的柱状图效果。 文章目录示例效果示例源代码(共125行)相关资料参考专栏介绍示例效果 示例源代码(共125行&…

JavaScript DOM【快速掌握知识点】

目录 DOM简介 获取元素 修改元素 添加和移除元素 事件处理 DOM简介 JavaScript DOM 是指 JavaScript 中的文档对象模型(Document Object Model);它允许 JavaScript 与 HTML 页面交互,使开发者可以通过编程方式动态地修改网页…

RocketMQ源码分析

RocketMQ源码深入剖析 1 RocketMQ介绍 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠…

汽轮机胀差及轴向位移(转载的)

这个文章是微信公众号推送看到的。搬运到这里方便以后学习用。 1、轴向位移和胀差的概念 轴位移指的是轴的位移量,而胀差则指的是轴相对于汽缸的相对膨胀量,一般轴向位移变化时其数值较小。轴向位移为正值时,大轴向发电机方向移,若此时汽缸膨…

如何快速了解一个系统?

前言 开发人员经常会面临下面一些场景: 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习?被拉过去参与一个陌生系统的迭代开发或者系统维护(bugfix),如何快速上手&…

关键词聚类和凸现分析-实战1——亚急性甲状腺炎的

审稿人问题第8页第26行-请指出#是什么意思,并解释为什么亚急性甲状腺炎在这里被列为#8。我认为在搜索亚急性甲状腺炎相关文章时,关键词共现分析应该提供关键词共现的数据。这些结果的实际用途是什么?亚急性甲状腺炎是一种较为罕见但重要的甲状腺疾病&am…

vue + qiankun 项目搭建

一、cli3构建vue2项目 1、前期工作:查看cli安装情况与安装 npm install -g vue/cli 已安装情况查看:vue -V(大写的V) 2、新建项目 vue create main-project 3、选择自定义配置 配置选择 选择vue版本、babel、router、vuex、css预处理器、lint格式校…