Java中的运算符--短路运算

news2024/10/7 17:23:19

文章目录

  • 0 写在前面
  • 1 介绍
  • 2 举例
    • 2.1 逻辑与 &&
    • 2.2 逻辑或 ||
  • 3 小技巧
  • 4 写在最后

0 写在前面

JAVA中有两个短路运算,一个是短路与,一个是短路或。
所谓短路,就是当一个参与运算的操作数足以推断该表达式的值时,另一个操作数(可能是表达式)就不会执行。

1 介绍

短路与:&&
短路或:||
应用:

-------------------------------------------
两个:(逻辑1 && 逻辑2)
多个:(逻辑1 && 逻辑 2 &&  逻辑3 &&……)
-------------------------------------------
两个:(逻辑1 || 逻辑2)
多个:(逻辑1 || 逻辑 2 ||  逻辑3 ||……)
-------------------------------------------

2 举例

逻辑与、逻辑或都是自作向右计算。

2.1 逻辑与 &&

两边同时为true,则为true。
有一方为false,则为false。
左边为false,右边不执行,为false。
如果第一个操作数已经能够确定表达式为false,则自动停止,第二个就不再进行运算判断。
在这里插入图片描述
举例:

        int a = 3;
        int b = 3;

        System.out.println(a++ == 10 && ++b == 10);//false
        
        System.out.println(a);//4
        
        System.out.println(b);//3
    }

结果为false。
因为a++的运算为先使用a的值再自加,所以3==10的结果为false,那么第一个表达式为false时在短路与中,第二个表达式不执行;
没走到第二个表达式,那么b也就没运算,b得值还是3;

2.2 逻辑或 ||

两边同时为false,则为false。
有一方为true,则为true。
左边为true,右边不执行,为true。
如果第一个操作数已经能够确定表达式为true,则自动停止,第二个就不再进行运算判断。
在这里插入图片描述

        int x = 3;
        int y = 3;

        System.out.println(x++ == 3 || ++y==10);//true

        System.out.println(x);//4

        System.out.println(y);//3

结果为true。
因为x++的运算为先使用x的值再自加,所以3==3的结果为true,那么第一个表达式为true时在短路或中,第二个表达式不执行;
没走到第二个表达式,那么y也就没运算,y得值还是3;

3 小技巧

使用逻辑运算可以避免一些小错误,例如在java中被除数是0的话,会引发一些问题。
使用逻辑与则可以避免这个错误:

		x!=0 && y/x > 3

此段代码说的是,如果x不等于0,才会将x作为被除数。
还有许多小技巧,碍于篇幅不列举了,可以自行探索一下。

4 写在最后

关于短路运算有一个口诀可以记一下:
逻辑与–>一假则假,全真才真
逻辑或–>一真则真,全假才假
实际开发中逻辑的应用还是比较多的。

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

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

相关文章

VirtualBox安装CentOS7

一:、下载CentOS7的镜像 下载地址:Downloadhttps://www.centos.org/download/ 进入后有三个版本可以选择: 1、DVD ISO 标准安装版,一般下载这个就可以了(推荐)本文以此为例! 2、Everything…

2023跨年代码(烟花+雪花)

一眨眼,马上就2023年了,祝大家在新的一年里:身体健康平安,生活充实饱满,事业步步高升,心情阳光灿烂,财运滚滚而来,家庭美满幸福,新年开心快乐! 本文将给大家分享一些跨年…

GitHub Copilot

介绍 GitHub Copilot 是人工智能编程助手,它可以帮助你编写程序。在你用visual studio或visual studio code等软件设计工具进行编程时,它可以直接给你整行或整个方法的代码提示,并且提供多种提示方案供你选择。他是由openai公司(马…

docker 及docker-compose network概念及操作详解

1. docker network概述 Docker通过使用网络驱动程序【network drivers】支持网络容器。默认情况下,Docker提供了多个网络驱动程序,如bridge 和overlay驱动程序。用户也可以自己写一个网络驱动插件,这样就可以创建自己的驱动程序。 Docker引…

SpringBoot整合Mybatis-Plus分页失效

场景:项目整合mybatis-Plus分页失效,current一直是1,size一直是10,total属性一直是0,数据分页不准 先看官网给的示例: 解决方案是新建mybatis-Plus的配置文件: package com.amc.config;import …

[附源码]计算机毕业设计海南琼旅旅游网Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

混检阳性概率的计算(贝叶斯定理的一个应用例)

目录 1. 混检阳性概率的计算 2. 混管阳性时你阳性的概率有多大? 2.1 贝叶斯分析结果的解释 1. 混检阳性概率的计算 目前核酸混检的基本做法是十混一,如果阳性人群分布完全随机,那么做十混一混检为阳性的概率有多大呢? …

对immutable的理解?如何应用在react项目中?

一、是什么 Immutable,不可改变的,在计算机中,即指一旦创建,就不能再被更改的数据 对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象 Immutable 实现的原理是 Persistent Data Structure&#xff08…

笔试强训(四十二)

目录一、选择题二、编程题2.1 解读密码2.1.1 题目2.1.2 题解2.2 走迷宫2.2.1 题目2.2.2 题解一、选择题 (1)tcp套接字中,不会阻塞的是哪一种操作(D) A.read B.write C.accept D.bind bind函数不会阻塞执行流的 &#…

Stm32旧版库函数3——nrf24l01 16位数据 51单片机发送与stm32接收

51代码&#xff1a; #include <reg52.h> #include <intrins.h> typedef unsigned char uchar; typedef unsigned char uint; //****************************************NRF24L01端口定义*************************************** sbit MISO P1^7; sbit …

runnable、callable、consumer、supplier

Java 没有委托的概念&#xff1b; 相反&#xff0c;如果需要一个指向函数的指针&#xff0c;可以创建内联匿名类&#xff08;或 Java 8 的 lambda 表达式&#xff09;&#xff0c;它们是为此建议设计的某些接口的实现&#xff08;也称为 Java 8 的功能接口&#xff09;。 然而&…

Java项目:SSM汽车维修中心管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本系统包括普通用户和管理员两种角色&#xff1b; 用户角色包含以下功能&#xff1a; 用户信息管理,查看车辆信息,维修记录查看等功能。 管理…

ORB-SLAM2 --- Tracking::GrabImageMonocular函数解析

目录 1.函数作用 2.到这步之前我们做了什么 3.code 4.函数解析 1.函数作用 哈哈哈&#xff0c;这其实应该是这个专栏的第一篇文章&#xff0c;也没什么必要写&#xff0c;但是我怕大家看的时候对单目还没有初始化没有进入跟踪线程前面比较懵逼&#xff0c;所以我补了此内…

Kali Linux安装go语言环境详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是Kali Linux安装go语言环境。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未…

【实操篇】Linux权限管理

目录 ●权限的基本介绍 ●rwx权限 ①rwx作用到文件 ②rwx作用到目录 ●修改权限——chmod ①、-、变更权限 ②数字变更权限 ●修改文件所有者——chown ●修改文件所在组——chgrp ●权限的基本介绍 从中随便找一行进行分析如下图所示&#xff1a; 1.文件类型 - &#x…

Hudi 0.12.0 搭建——集成 Hive3.1 与 Spark3.2

Hudi 搭建环境准备一、安装 Maven1.解压2.配置环境变量3.修改 Maven 下载源二、安装 Hudi1.解压2.配置环境变量3.修改 Hudi 下载源与对应版本号4.修改源码以兼容 Hadoop3.x5. 解决 Spark 依赖冲突6. 解决 Spark 向 Hudi 插入报错7. 编译 Hudi8. 启动测试集群其它生态安装与配置…

JSP ssh驾校管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh驾校管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Mye…

6秒钟读懂网络攻击和防御的有关产品理论

文章目录一 常见网络攻击1.病毒攻击2.DDos网络攻击3.木马攻击WebsSheLL4.渗透攻击数据拖取5.APP漏洞6.营销撸羊毛7&#xff0c;DDoS攻击挑战二&#xff0c;大禹基本功能1.基础防护2.BGP高防包3.BGP高仿IP4.棋牌盾三&#xff0c;大禹技术原理1.高仿IP牵引攻击流量&#xff0c;保…

Java安全--CC3

CC3和CC1和CC6的执行命令方式不一样。CC3使用的是动态类加载。我们把恶意代码写在加载类的静态构造方法中。需要注意的是&#xff1a; 当初始化的时候就会执行静态构造方法&#xff0c;defineClass的时候是不会执行静态构造代码块的&#xff0c;我们在找利用点的时候需要有new…

1658 页的《Java 面试突击核心讲》在牛客网火了,完整版 PDF 开放下载!

前言 我们都知道&#xff0c;在程序员的职业生涯中&#xff0c;有多个发展方向&#xff0c;不过就数据表明&#xff0c;近年来选择架构师方向的开发人员也越来越多。 对于架构师的发展前途&#xff0c;我相信是已经没有争议的&#xff0c;但这个“概念”对于很多开发人员来说…