&和&&的区别(简单易懂)

这篇具有很好参考价值的文章主要介绍了&和&&的区别(简单易懂)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

&(按位与)和&&(逻辑与)的区别如下:

1.&&具有短路功能,而&不具有短路功能。
2.
当&运算符两侧的表达式的结果均为真时,整个运算结果才为真。
当&&操作符第一个表达式为 false时,结果为 false,并且不再计算第二个表达式。

(简单的表达就是:使用&运算符,必须两侧的都是true,结果为真。使用&&运算符,重点看第一个表达式,第一个表达式为false,后面的表达式就不会再计算(因为具有短路功能),如果第一个表达式是true,后面就会继续进行计算,直到后面全部都为true,才为真。)

为了让大家更好的理解,请看下面代码:
这里引入一下变量的命名规范!!!
变量的名字可大小写混用但首字符应小写。词由大写字母分隔,限制用下划线,限制使用美元符($),因为这个字符对内部类有特殊的含义。示例如:resultOne 。

        boolean resultOne = 1==3 & 1==1 & 2==2; //使用 &
        boolean resultTwo = 1==3 && 1==1 && 2==2; //使用 &&
        System.out.println(resultOne); //resultOne = false
        System.out.println(resultTwo); //resultTwo = false
        //当使用 & 时,要进行  1==3 & 1==1 & 2==2 的判断
        //当使用 && 时,因为 1==3 为 false,所以进行了短路的操作,后面的1==1 && 2==2 不用执行。

在很多时候我们都用到&&而不用&,例如在验证用户登录时进行时进行的判断,用户名不为空(null)也不是空字符串,代码应该写成:

userName != null && !userName.equals("");
//这里不能使用 & 运算符,顺序也不能交换,如果用户名真的为空的情况下,会报空指针异常(NullPointerException)。

userName.equals("") 如果userName为null 进行equals操作会报NullPointerException,所以我们要先判断userName不为null,在用equals判断不是空字符串。文章来源地址https://www.toymoban.com/news/detail-425342.html

到了这里,关于&和&&的区别(简单易懂)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通俗易懂---IP与Mac的联系与区别

    前言: 最近在做一个远端获取Mac地址的项目,心血来潮又想着把网络方面的知识做一下回顾,这几天在整理一下交换机路由等相关的知识做个总结。加油,大家一起进步。 话不多说,进入正题!!! IP地址: IP 地址是因特网上的主机和路由器所使用的地址,用于标识两部分

    2024年02月13日
    浏览(43)
  • css ,less和sass的区别[简洁易懂

    CSS、Less和Sass都是用于样式表编写和管理的技术,它们之间有以下区别: CSS(层叠样式表)是一种标准的样式表语言,用于描述网页的外观和样式。它是前端开发中最基础和常用的技术,所有网页都需要使用CSS来定义样式。 Less是一种CSS预处理器,它在CSS的基础上提供了更多

    2024年02月11日
    浏览(45)
  • github创建个人令牌-简单易懂

    注册了github或gitee账号了 记得保存该令牌,原因是生成的该令牌只显示一次,页面刷新之后就不在显示了。 复制的令牌别公开 对令牌设置权限,需要哪个就勾选哪个。 对令牌失效时间的设置,建议隔断时间设置一次,别让有效时间太久,可能时间长了自己也记不得了。

    2024年02月09日
    浏览(43)
  • CDM—码分复用(简单易懂)

    · 码分复用简称 CDM · 可以实现多个用户 同时 使用 同样频率 进行通信 · 如何实现?—— 通过各用户的码序列进行区分。 2.1 表示 1、每个比特(0或1)以一组码序列发送 (m位编码将每位比特划分为m) 码片:一个数据信号(如逻辑1或0)通常要用多个编码信号来进行编码,

    2024年02月01日
    浏览(33)
  • 简单易懂的Transformer学习笔记

    1. 整体概述 2. Encoder         2.1 Embedding         2.2 位置编码                 2.2.1 为什么需要位置编码                 2.2.2 位置编码公式                 2.2.3 为什么位置编码可行         2.3 注意力机制         2.3.1 基本注意力机制  

    2024年02月14日
    浏览(29)
  • vue router原理(简单易懂的)

    前端路由就是用户事件和事件处理函数之间的对应关系,也就是不同的用户事件要对应不同的页面内容 Vue Router其实也是一个插件,那就肯定需要利用vue.use()进行注册,但是在注册时需要调用插件的install方法,所以Vue Router中也定义了install() URL 中 # 后面的内容作为路径地址,

    2024年02月09日
    浏览(65)
  • Sutherland–Hodgman 算法介绍(简单易懂)

    目录 一、算法介绍 二、算法描述 三、计算细节补充 四、算法总结   我们使用 Sutherland–Hodgman算法 来裁剪多边形的边,一般是给你一个多边形顶点序列( P1,P2,P3,P4,… Pn) 让你裁剪,最终裁剪掉 裁剪多边形 的 外部 部分( 下图黑框就是裁剪多边形 )。 像这样: 裁剪多边形示意

    2024年01月16日
    浏览(45)
  • MVCC详解,深入浅出简单易懂

    一、什么是MVCC? mvcc,也就是多版本并发控制,是为了在读取数据时不加锁来提高读取效率和并发性的一种手段。 数据库并发有以下几种场景: 读-读:不存在任何问题。 读-写:有线程安全问题,可能出现脏读、幻读、不可重复读。 写-写:有线程安全问题,可能存在更新丢

    2024年02月04日
    浏览(29)
  • Axios的二次封装(简单易懂)

    是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端 简单的理解就是ajax的封装 在使用Vue.js框架开发前端项目时 会经常发送ajax请求服务端接口 在开发过程中 需要对axios进一步封装 方便在项目中的使用 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求

    2023年04月09日
    浏览(66)
  • C语言:结构体详解(简单易懂)

    前言: 我们在前面的C语言学习过程中,学习了各种数据类型,例如:整型数据类型、字符型数据类型,浮点型数据类型等,这些数据类型的设计都是为了对实际生活中的各种数据进行在计算机上的储存,但我们生活中还有一些数据无法使用以上单一的数据类型进行描述,例

    2024年02月01日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包