【Java基础学习打卡20】运算符(下)

目录

  • 前言
  • 一、关系运算符
  • 二、逻辑运算符
    • 1.逻辑与运算符
    • 2.逻辑或运算符
    • 3.逻辑非运算符
    • 4.逻辑异或运算符
  • 三、三元运算符
  • 总结


前言

本文继续介绍运算符中的关系运算符、逻辑运算符,还有三元运算符。在 Java 编程中,运算符起着非常重要的作用,它们用于对数据进行操作和计算。运算符可以帮助我们进行数学运算、逻辑判断、赋值操作等,是编写复杂程序和表达式的基础。


一、关系运算符

在 Java 中,关系运算符用于比较两个值之间的关系,并返回布尔值(truefalse)。Java 提供了以下关系运算符:

  • >:大于
  • >=:大于等于
  • <:小于
  • <=:小于等于
  • ==:等于
  • !=:不等于

接下来将逐一给出示例代码,但是目前只讨论两边操作数是基本数据类型中数值类型的关系运算。

大于(>): 检查左操作数是否大于右操作数,如果是则返回 true,否则返回 false

int a = 5;
int b = 10;
boolean c = (a > b); // false

大于等于(>=): 检查左操作数是否大于或等于右操作数,如果是则返回 true,否则返回 false

int a = 5;
int b = 10;
boolean c = (a >= b); // false

小于(<): 检查左操作数是否小于右操作数,如果是则返回 true,否则返回 false

int a = 5;
int b = 10;
boolean c = (a < b); // true

小于等于(<=): 检查左操作数是否小于或等于右操作数,如果是则返回 true,否则返回 false

int a = 5;
int b = 10;
boolean c = (a <= b); // true

相等(==): 检查两个操作数是否相等,如果相等则返回 true,否则返回 false。在比较的两边操作数都是数值类型的情况下,即使它们的数据类型不相同,只要值相等,就会返回 true

int a = 5;
int b = 10;
float c = 5.0f;
boolean d = (a == b); // false
boolean e = (a == c); // true

不相等(!=): 检查两个操作数是否不相等,如果不相等则返回 true,否则返回 false

int a = 5;
int b = 10;
boolean c = (a != b); // true

二、逻辑运算符

在 Java 中,逻辑运算符用于组合和操作布尔值(boolean)类型的表达式,返回布尔结果(truefalse)。

提供如下逻辑运算符:

  • &:与
  • &&:短路与
  • |:或
  • ||:短路或
  • !:非
  • ^:异或

1.逻辑与运算符

&&& 是逻辑与运算符,作用是对两个布尔表达式进行逻辑与操作,只有当前后两个表达式都为 true 时,结果才为 true,否则结果为 false。使用示例如下:

boolean result = expression1 & expression2;
boolean shortResult = expression1 && expression2;

区别就是 && 具有短路的特性。如果第一个表达式的值为 false,那么第二个表达式不会被计算,因为无论第二个表达式的结果如何,整个逻辑与表达式都会返回 false。这种短路特性可以用来避免不必要的计算或者处理可能引发错误的操作。

public static void main(String[] args) {int a = 3;int b = 5;// a>b为false,b>a为trueboolean c = (a>b) & (b>a); // 两边的表达式都进行计算boolean d = (a>b) && (b>a); // 左边表达式为false,不再计算右侧表达式,即短路System.out.println(c); // 输出:falseSystem.out.println(d); // 输出:false	
}

那么在实际编程中,推荐使用 && 短路与。

2.逻辑或运算符

||| 是逻辑或运算符,作用是对两个布尔表达式进行或操作。如果至少有一个表达式为 true,则结果为 true;只有当两个表达式都为 false 时,结果才为 false。使用示例如下:

boolean result = expression1 | expression2;
boolean shortResult = expression1 || expression2;

|| 是短路逻辑或运算符,也用于两个布尔表达式的逻辑或操作。但是与普通逻辑或运算符 | 不同的是,如果第一个表达式的值为 true,则不会再执行第二个表达式,直接返回 true

public static void main(String[] args) {int a = 5;int b = 3;// a>b为true,b>a为falseboolean c = (a>b) | (b>a); // 两边的表达式都进行计算boolean d = (a>b) || (b>a); // 左侧表达式计算为true,不再计算右侧表达式,即短路System.out.println(c); // 输出:trueSystem.out.println(d); // 输出:true			
}

那么在实际编程中,也是推荐使用 || 短路或。

3.逻辑非运算符

! 是逻辑非运算符,用于对布尔值进行逻辑否定操作。其使用示例如下:

boolean result = !expression;

! 运算符将一个布尔表达式的值取反,即如果原来的布尔值为 true,则取反后为 false;如果原来的布尔值为 false,则取反后为 true

public static void main(String[] args) {boolean a = true;boolean b = !a; // 取反System.out.println(b); // 输出:false	
}

逻辑非运算符 ! 可以用于实现逻辑条件的判断、布尔值的翻转等操作。例如,可以使用 ! 运算符对一个条件进行取反,或者对一个布尔变量进行取反。

4.逻辑异或运算符

^ 是逻辑异或运算符,用于对两个布尔表达式进行异或操作。使用示例如下:

boolean result = expression1 ^ expression2;

逻辑异或运算符 ^ 的操作规则是:当且仅当两个操作数中的一个为 true,另一个为 false 时,结果为 true;如果两个操作数都为 true 或都为 false,则结果为 false

public static void main(String[] args) {boolean a = true;boolean b = false;boolean c = a ^ b;System.out.println(c); // 输出:true	
}

在上述代码中,ab 变量的布尔值不相同,所以结果为 true。只有两边的值相等(truefalse)时结果为 false

逻辑异或运算符 ^ 可用于逻辑条件的判断、布尔值的翻转等操作。例如,可以使用 ^ 运算符来判断两个布尔值是否不同。

三、三元运算符

三元运算符是一种特殊的条件运算符,也称为条件运算符。它由三个操作数组成,它的语法形式如下:

result = condition ? value1 : value2;

其中,condition 是一个布尔表达式,用于判断一个条件是否成立。如果 conditiontrue,则表达式的值为 value1;如果 conditionfalse,则表达式的值为 value2

三元运算符的工作原理是,首先计算 condition 的值,如果为 true,则返回 value1;如果为 false,则返回 value2

三元运算符在简单的条件判断场景中非常有用,可以在一行代码中根据条件选择不同的值进行赋值。

public static void main(String[] args) {int a = 5;int b = 10;int max = (a > b) ? a : b;System.out.println(max); // 输出:10}

上述代码中,根据 (a > b) 的条件判断,如果成立,即 a 大于 b,则将 a 赋值给变量 max,否则将 b 赋值给 max

需要注意的是,三元运算符是右结合的,这意味着在嵌套使用时,可以使用括号来明确运算的顺序。此外,三元运算符的操作数可以是任何类型,但是返回的值必须与赋值目标的类型兼容。


总结

关系运算符用于比较两个值之间的关系,并返回布尔值,比较简单。逻辑运算符有6种,对于逻辑与推荐使用短路与,逻辑或推荐使用短路或。最后是三元运算符,也叫作三目运算符,对于简单的判断,是很有用的。

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

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

相关文章

QTDAY3

闹钟 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器事件处理函数 #include <QTime> //时间类 #include <QString> #include <QPushButton> #include <QTextToSpeech> #include …

C++模拟实现queue

1.前言 queue 遵循的原则是先进先出&#xff0c;那到底是用list 还是 vector呢&#xff1f;其实都可以&#xff0c;但是严格来讲vector是不可以的&#xff0c;因为他头删的效率太低了。所以vs官方是不允许用vector的&#xff1a; 因为底层的pop用的是pop_front(), vector是没有…

BDF和DHCP(第二十七课)

一、BFD 1、BFD概述 1)Bidirectional Forwarding Detection :双向转发检测 2)BFD技术背景 现网中存在的问题: -不能快速有效的发现网络设备或链路出现的故障 -不能以毫秒级的速度发现网络问题 -协议自身的报文检测机制一般都大于1秒 解决方案: -需要一种专门用于…

ssh2-sftp-client实现前端项目自动部署

首先要npm安装插件 npm i ssh2-sftp-client 项目中新建一个js文件 npm run build 之后在终端中 执行这个js文件就可以直接将文件上传到 服务器 import Client from ssh2-sftp-client; import { join } from path;const sftp new Client();const deploy async () > {try…

【iOS】iOS持久化

1 持久化目的 快速展示&#xff0c;提升体验 已经加载过的数据&#xff0c;用户下次查看时&#xff0c;不需要再次从网络&#xff08;磁盘&#xff09;加载&#xff0c;直接展示给用户 节省用户流量&#xff08;节省服务器资源&#xff09; 对于较大的资源数据进行缓存&#x…

小创业公司死亡剧本

感觉蛮真实的&#xff1b;很多小创业公司没有阿里华为的命&#xff0c;却得了阿里华为的病。小的创业公司要想活无非以下几点&#xff1a; 1 现金流&#xff0c;现金流&#xff0c;现金流&#xff1b; 2 产品&#xff0c;找痛点&#xff0c;不要搞伪需求&#xff1b; 3 根据公司…

【学习笔记】视频检测方法调研

目录 1 引言2 方法2.1 视频目标跟踪2.1.1 生成式模型方法2.1.2 判别式模型方法2.1.2.1 基于相关滤波跟踪2.1.2.2 基于深度学习跟踪 2.2 视频异常检测2.2.1 基于重构方法2.2.2 基于预测方法2.2.3 基于分类方法2.2.4 基于回归方法 2.3 深度伪造人脸视频检测2.3.1 基于RNN时空融合…

MQ公共特性介绍 (ActiveMQ, RabbitMQ, RocketMQ, Kafka对比)

本章介绍 本文主要介绍所有MQ框架都具备的公共特点&#xff0c;同时对比了一些目前比较主流MQ框架的优缺点&#xff0c;给大家做技术选型作参考。 文章目录 本章介绍MQ介绍适用场景异步通信案例一案例二 系统解耦削峰填谷广播通信总结 缺点MQ对比APQP历史AMQP是什么 MQ介绍 M…

【Docker】Docker 部署 Mysql 并设置数据持久化

文章目录 1. Docker持久化MySQL2. 测试删除MySQL容器后新建容器&#xff0c;数据还在不在3. 参考资料 我们使用Docker的目的就是图它方便下载部署&#xff0c;不用常规的经历下载、配置、安装等等繁琐的步骤。但是与此同时Docker也存在一些缺点&#xff0c;像删除容器后数据就都…

C/C++开源库推荐

C/C开源库推荐 主要都是平常用到的&#xff0c;包含windows开发、android开发、后台开发、音视频开发、深度学习等等最后还附带几个其他语言开发的比较好的项目 GUI开发 qt 跨平台开发库&#xff0c;内部封装了各种跨平台工具&#xff0c;但是大多数情况下都被用作开发跨平台…

WEB 典型安全功能说明

WEB 典型安全功能 认证Authentication 认证是指通过验证用户的身份来确认用户是否有权访问某个系统或资源。在Web安全中&#xff0c;认证是非常重要的一环&#xff0c;它可以防止未经授权的访问&#xff0c;保护用户的数据和系统的安全。 登录 登录是用户认证的常见方式之一…

SpringBoot 快速实现 IP 地址解析

在spring boot 项目中获取请求的ip与详细地址&#xff0c;很多网站app 中都已经新增了ip 地址显示&#xff0c;大家也可以用在自己的开发中&#xff0c;显得更高级。 引入 如果使用本地ip 解析的话&#xff0c;我们将会借助ip2region&#xff0c;该项目维护了一份较为详细的本…

【小尘送书-第三期】Python机器学习:基于PyTorch和Scikit-Learn 》

大家好&#xff0c;我是小尘&#xff0c;欢迎关注&#xff0c;一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的实习&#xff01; 本文目录 一、前言二、作者简介三、内容简介四、抽奖方式 一、前言 近年来&#xff0…

数字身份、分布式存储、跨链技术等将如何推动Web3数据的发展?

Web3数据是基于区块链技术、去中心化、可信任的数据&#xff0c;具有较高的安全性和可信度。随着Web3.0时代的到来&#xff0c;Web3数据将会在金融、物联网、医疗、教育、政务等领域发挥重要的作用。其中&#xff0c;数字身份、分布式存储、跨链技术等将会是Web3数据发展的重要…

linux-imx 内核下载

1. 源码路径 https://github.com/nxp-imx/linux-imx 2. 下载方法 2.1 克隆 linux-imx 到自己的 github 账号&#xff1b; 2.2 登录 https://coding.net/ 注册一个账号&#xff1b; 2.3 在 coding 平台创建一个项目&#xff1b; 在项目中的「代码仓库」中添加一个…

sonarqube PHP编码规范检查

一、PSR规范整理 PHP 已有的编码规范如下 https://blog.csdn.net/qq_40876291/article/details/103848172 1.1 基本编码规范&#xff1a;PSR1 官网规范链接 https://www.php-fig.org/psr/psr-1/ 文件只能使用<?php和<?标记。文件必须仅使用UTF-8&#xff0c;而不使…

BMapGL -- 生成多个maker,获取指定标识的maker,并清除他们

需求描述: 在使用 Baidu Map JavaScript API 创建多个标记时,可以为每个标记设置一个唯一的标识符(identifier),以便在以后可以根据标识符获取特定的标记,并清除它们。 代码: // 创建地图实例 var map = new BMapGL.Map("container");// 创建标记1 var poin…

创造型模式-原型模式(场景体验-》方案解决===代码图解)

创造型模式-原型模式 创建重复对象-场景体验解决方案&#xff08;原型模式&#xff09;原型模式定义 创建重复对象-场景体验 今天来一个大客户&#xff0c;他要求帮他下100个订单。每个订单除了用户ID&#xff0c;和用户名不同之外&#xff0c;其他个人信息完全相同。 订单类 …

【后端面经】微服务构架 (1-5) | 限流:濒临奔溃?限流守护者拯救系统于水火之中!

文章目录 一、前置知识1、什么是限流?2、限流算法A) 静态算法a) 漏桶b) 令牌桶c) 固定窗口d) 滑动窗口B) 动态算法3、限流的模式4、 限流对象4、限流后应该怎么做?二、面试环节1、面试准备2、基本思路3、亮点展现A) 突发流量(针对请求个数而言)B) 请求大小(针对请求大小而言)…

「JSON对象互转工具」JSON转对象、对象转JSON

JSON对象互转工具 一、Fastjson二、ObjectMapper三、Gson四、总结五、建议 一、Fastjson Fastjson 是一款高性能的 JSON 解析库&#xff0c;提供了丰富而强大的方法来处理 JSON 数据。下面是一些常用的 Fastjson, 方法的详解&#xff1a; toJSONString(Object object)&#xff…