Java逻辑运算符(、||和!),Java关系运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体如表 1 所示。
| 运算符 | 用法 | 含义 | 说明 | 实例 | 结果 |
|---|---|---|---|---|---|
| && | a&&b | 短路与 | ab 全为 true 时,计算结果为 true,否则为 false。 | 2>1&&3<4 | true |
| || | a||b | 短路或 | ab 全为 false 时,计算结果为 false,否则为 true。 | 2<1||3>4 | false |
| ! | !a | 逻辑非 | a 为 true 时,值为 false,a 为 false 时,值为 true | !(2>4) | true |
| | | a|b | 逻辑或 | ab 全为 false 时,计算结果为 false,否则为 true | 1>2|3>5 | false |
| & | a&b | 逻辑与 | ab 全为 true 时,计算结果为 true,否则为 false | 1<2&3<5 | true |
- && 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
- || 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)
注意:短路与(&&)和短路或(||)能够采用最优化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路与和短路或。
结果为 boolean 型的变量或表达式可以通过逻辑运算符结合成为逻辑表达式。逻辑运算符 &&、|| 和 !按表 2 进行逻辑运算。
| a | b | a&&b | a||b | !a |
|---|---|---|---|---|
| true | true | true | true | false |
| false | true | false | true | true |
| true | false | false | true | false |
| false | false | false | false | true |
逻辑运算符的优先级为:!运算级别最高,&& 运算高于 || 运算。!运算符的优先级高于算术运算符,而 && 和 || 运算则低于关系运算符。结合方向是:逻辑非(单目运算符)具有右结合性,逻辑与和逻辑或(双目运算符)具有左结合性。
下面是一些使用逻辑运算符的示例。
- x>0 && x<=100 // 第一行语句
- y%4==0 || y%3==0 // 第二行语句
- !(x>y) // 第三行语句
其中,第一行语句用于判断 x 的值是否大于 0 且小于或等于 100,只有两个条件同时成立结果才为真(true)。第二行语句用于判断 y 的值是否能被 4 或者 3 整除,只要有一个条件成立,结果就为真(true)。第三行语句先比较 x 和 y,再将比较结果取反,即如果 x 大于 y 成立,则结果为假(false),否则为真(true)。
Java关系运算符
关系运算符(relational operators)也可以称为“比较运算符”,用于用来比较判断两个变量或常量的大小。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。
关系表达式是由关系运算符连接起来的表达式。关系运算符中“关系”二字的含义是指一个数据与另一个数据之间的关系,这种关系只有成立与不成立两种可能情况,可以用逻辑值来表示,逻辑上的 true 与 false 用数字 1 与 0 来表示。关系成立时表达式的结果为 true(或 1),否则表达式的结果为 false(或 0)。表 1 给出了比较运算符的含义及其实例应用。
| 运算符 | 含义 | 说明 | 实例 | 结果 |
|---|---|---|---|---|
| > | 大于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值大于后面变量的值, 则返回 true。 | 2>3 | false |
| >= | 大于或等于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值大于等于后面变量的值, 则返回 true。 | 4>=2 | true |
| < | 小于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值小于后面变量的值,则返回 true。 | 2<3 | true |
| <= | 小于或等于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值小于等于后面变量的值, 则返回 true。 | 4<=2 | false |
| == | 相等运算符 | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值相等,也都将返回 true。 如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true。 Java 也支持两个 boolean 类型的值进行比较。 | 4==4 97=='a' 5.0==5 true==false | true true true false |
| != | 不相等运算符 | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值不相等,也都将返回 true。 如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true。 | 4!=2 | true |
注意点如下所示:
- 基本类型的变量、值不能和引用类型的变量、值使用 == 进行比较;boolean 类型的变量、值不能与其他任意类型的变量、值使用 == 进行比较;如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用 == 进行比较。
- == 和 != 可以应用于基本数据类型和引用类型。当用于引用类型比较时,比较的是两个引用是否指向同一个对象,但当时实际开发过程多数情况下,只是比较对象的内容是否相当,不需要比较是否为同一个对象。
关系运算符的优先级为:>、<、>=、<= 具有相同的优先级,并且高于具有相同优先级的 !=、==。关系运算符的优先级高于赋值运算符而低于算术运算符,结合方向是自左向右。
关系表达式通常用于 Java 程序的逻辑判断语句的条件表达式中。使用关系表达式要注意以下几点:
- 运算符 >=、==、!=、<= 是两个字符构成的一个运算符,用空格从中分开写就会产生语法错误。例如
x> =y;是错误的,但是可以写成x >= y;在运算符的两侧增加空格会提高可读性。同样将运算符写反,例如 =>、=<、=! 等形式会产生语法错误。 - 由于计算机内存放的实数与实际的实数存在着一定的误差,如果对浮点数进行 ==(相等)或 !=(不相等)的比较,容易产生错误结果,应该尽量避免。
- 不要将“==”写成“=”。
下面是一些使用关系运算符的示例。
- a > b // 比较变量a的值是否大于变量b的值
- x+y> = z // 比较变量x与变量y的和是否大于或等于变量z的值
- width * width+size != area // 比较变量width的平方加上变量size的值是否与变量area的值不相等
- name == "zhht" // 比较变量name的值是否等于字符串nzht
- pass != "123456" // 比较变量pass的值是否不等于字符串“123456”
例 1
编写一个程序,使用户可以从键盘输入两个数,并判断这两个数之间的大小。 实现代码如下:
- public static void main(String[] args) {
- int number1, number2; // 定义变量,保存输入的两个数
- System.out.print("请输入第一个整数(number1):");
- Scanner input = new Scanner(System.in);
- number1 = input.nextInt(); // 输入第一个数
- System.out.print("请输入第二个整数(number2):");
- input = new Scanner(System.in);
- number2 = input.nextInt(); // 输入第二个数
- System.out.printf("number1=%d,number2=%d\n", number1, number2); // 输出这两个数
- // 判断用户输入的两个数是否相等
- if (number1 == number2) {
- System.out.println("number1 和 number2 相等。");
- }
- // 判断用户输入的两个数据是否相等
- if (number1 != number2) {
- System.out.println("number1 和 number2 不相等。");
- // 判断用户输入的数1是否大于数2
- if (number1 > number2) {
- System.out.println("number1 大于 number2。");
- }
- // 判断用户输入的数1是否小于数2
- if (number1 < number2) {
- System.out.println("number1 小于 number2。");
- }
- }
- }
保存程序并运行,运行结果如下所示:

图 1 运行结果
在本程序中,使用 input.nextInt() 接收用户从键盘输入的两个数,然后通过关系运算符来比较这两个数之间的大小。这里用到了 if 语句,它是一个流程控制语句,将在后面的章节中详细讲解。
相关文章:
Java逻辑运算符(、||和!),Java关系运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。 逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体如表 1 所示。 表 1 逻辑运算符的用…...
三个设备文件
...
Java赋值运算符(=)
赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“”,它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。 其语法格式如下所示: 变量名称表达式内容 在 Java 语言中,“变量名称”和“表达式…...
提升药店效率:山海鲸医药零售大屏的成功案例
在医药行业中,特别是医药零售领域,高效的药品管理和客户服务至关重要。随着科技的飞速发展,数字化解决方案已经成为提高医药零售管控效率的有效工具之一。其中,医药零售管控大屏作为一种强大的工具,正在以独特的方式改…...
使用Fragement(碎片)
一、Fragment简介 屏幕大小的差距可能会使同样的界面在不同设备上显示出不同的效果,为了能同时兼顾到手机和平板电脑的开发,从Android3.0版本开始提供了Fragment。 Fragment(碎片)是一种嵌入在Activity中的UI片段,它…...
种花问题(Python题目)
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 …...
STM32入门F4
学习资料:杨桃电子,官网:洋桃电子 | 杜洋工作室 www.doyoung.net 嵌入式开发核心宗旨:以最适合的性能、功能、成本来完成最有性价比的产品开发。 1.为什么要学F407 STM32F103系列与STM32F407系列对照表: 2.F4系列命…...
【30】c++设计模式——>状态模式
状态模式概述 状态模式是一种行为型设计模式,它可以让一个对象在其内部状态发生变化时更改其行为。通过将每个状态封装成一个独立的类,我们可以使状态之间互相独立,并且使得状态的切换变得更加灵活、可扩展。(多个状态之间可以相…...
中文编程开发语言编程实际案例:程序控制灯电路以及桌球台球室用这个程序计时计费
中文编程开发语言编程实际案例:程序控制灯电路以及桌球台球室用这个程序计时计费 上图为:程序控制的硬件设备电路图 上图为:程序控制灯的开关软件截图,适用范围比如:台球厅桌球室的计时计费管理,计时的时候…...
【python】高斯日记
题目: """ 题目描述: 高斯出生于1777年4月30日,记作1777-4-30。在此基础上,我们希望你写一个程序,给定一个数字n,表示从高斯出生的那天算起的第n天,输出这一天的具体日期。例如&…...
[论文笔记]MobileBERT
引言 今天带来一篇关于量化的论文MobileBERT,题目翻译过来是:一种适用于资源有限设备的紧凑型任务无关BERT模型。模型的简称是MobileBERT,意思是作者的这个BERT模型可以部署到手机端。 本篇工作,作者提出了MobileBERT用于压缩和加速BERT模型。与原始BERT一样,MobileBERT…...
【Spring Cloud】如何确定微服务项目的Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本
文章目录 1. 版本选择2. 用脚手架快速生成微服务的pom.xml3. 创建一个父工程4. 代码地址 本文描述如何确定微服务项目的Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本。 1. 版本选择 我们知道Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本选择一致性非常重…...
Power BI 傻瓜入门 1. 数据分析术语:Power BI风格
本章内容包括: 了解Power BI可以处理的不同类型的数据了解您的商业智能工具选项熟悉Power BI术语 数据无处不在。从你醒来的那一刻到你睡觉的时候,某个系统会代表你收集数据。即使在你睡觉的时候,也会产生与你生活的某些方面相关的数据。如…...
【C++和数据结构】位图和布隆过滤器
目录 一、位图 1、位图的概念 2、位图的实现 ①、基本结构 ②、set ③、reset: ④、test ⑤、问题: ⑥、位图优缺点及应用: ⑦、完整代码及测试 二、布隆过滤器 1、布隆过滤器的提出 2、布隆过滤器的实现 ①、基本结构 ②…...
Mybatis分页
本文主要讲解Mybatis分页相关的技术分享,如果觉得不错的话,就点个赞吧。。。。 Mybatis分页主要有2种类型: 一、物理分页: 1、定义: 物理分页是在数据库层面进行的分页,即通过SQL语句直接从数据库中查询…...
手写SVG图片
有时候QT中可能会需要一些简单的SVG图片,但是网上的质量参差不齐,想要满意的SVG图片,我们可以尝试直接手写的方法. 新建文本文档,将以下代码复制进去,修改后缀名为.svg,保存 <?xml version"1.0" encoding"utf-8"?> <svg xmlns"http://www…...
LVS负载均衡及LVS-NAT模式
一、集群概述 1.1 集群的背景 集群定义:为解决某个特定问题将多个计算机组合起来形成一个单系统 集群目的:为了解决系统的性能瓶颈 集群发展历史: 垂直扩展:向上扩展,增加单个机器的性能,即升级硬件 水…...
【Java集合类面试八】、 介绍一下HashMap底层的实现原理
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官: 介绍一下HashMap底层的…...
linux 安装操作 redis
1、redis概述和安装 1.1、安装redis 1. 下载redis 地址 https://download.redis.io/releases/ 2. 将 redis 安装包拷贝到 /opt/ 目录 3. 解压 tar -zvxf redis-6.2.1.tar.gz4. 安装gcc yum install gcc5. 进入目录 cd redis-6.2.16. 编译 make7. 执行 make install 进…...
博客后台模块续更(五)
十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…...
ChibiPIO-STM32F0:专为Cortex-M0优化的ChibiOS定制发行版
1. 项目概述ChibiPIO-STM32F0 是一个面向 STM32F0 系列微控制器的定制化 ChibiOS/RT 嵌入式实时操作系统发行版,其核心定位并非独立开发的新RTOS,而是对上游 ChibiOS/RT 源码树进行深度裁剪、适配与封装后的专用构建产物。它完整继承 ChibiOS/RT 的轻量级…...
BLE按键服务设计:轻量级只读GATT特征值实现
1. 项目概述ble-button是一个面向嵌入式 BLE(Bluetooth Low Energy)应用的轻量级服务模板,其核心目标是为物理按键、拨动开关、触摸感应等单比特输入设备提供标准化、可复用的蓝牙 GATT(Generic Attribute Profile)服务…...
基于深度神经网络的苹果病害叶片分类识别
前言 苹果是我国的重要经济作物之一,其产量和消费量均居世界第一。然而,苹果病害的发生给苹果产业带来了巨大的损失。因此,准确地识别苹果叶片和果实上的病害,及时采取防治措施,成为保障苹果产量和品质的关键。 本文通…...
FastbootEnhance完整指南:Windows平台最友好的Fastboot工具箱实战解析
FastbootEnhance完整指南:Windows平台最友好的Fastboot工具箱实战解析 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance FastbootEnhanc…...
SSTI漏洞学习笔记
一,SSTI漏洞原理 SSTI(Server-Side Template Injection)是一种服务器端模板注入漏洞,发生在应用程序使用模板引擎渲染用户输入时未能正确过滤或转义用户提供的内容。 服务端模板:有很多网页是使用模板生成的html页面…...
LFM2.5-1.2B-Thinking-GGUF辅助数学建模:从问题描述到MATLAB代码框架生成
LFM2.5-1.2B-Thinking-GGUF辅助数学建模:从问题描述到MATLAB代码框架生成 1. 数学建模的痛点与AI解决方案 数学建模是科研和工程领域的核心技能,但传统建模过程存在诸多挑战。许多研究者面临这样的困境:明明清楚问题描述,却卡在…...
阿里文生图神器Z-Image-Turbo体验:开箱即用,中文提示词效果惊艳
阿里文生图神器Z-Image-Turbo体验:开箱即用,中文提示词效果惊艳 你有没有想过,用一句简单的中文描述,就能在几秒钟内得到一张可以直接用在电商海报、社交媒体或者设计稿里的高清图片?比如“一只穿着宇航服的熊猫&…...
网易云音乐自动升级神器:3天轻松冲上LV10的完整指南
网易云音乐自动升级神器:3天轻松冲上LV10的完整指南 【免费下载链接】neteasy_music_sign 网易云自动听歌打卡签到300首升级,直冲LV10 项目地址: https://gitcode.com/gh_mirrors/ne/neteasy_music_sign 还在为网易云音乐升级而苦恼吗?…...
基于 IndexTTS2 的数字人语音生成 Pipeline 设计
IndexTTS2 是目前情感控制与时长控制能力最强的开源自回归 TTS 模型,非常适合作为数字人系统的「语音生成核心模块」。 本设计旨在构建一个从输入文案到最终数字人语音/视频的完整 Pipeline,使数字人能够做到: 克隆音色表达情感按剧本中的动作…...
《电磁波也会“转圈圈“?极化特性才是雷达识别的“指纹密码“!》思考题解答
思考题 1:为什么圆极化天线接收相反旋向的圆极化波时,理论损耗是 3dB 而不是无穷大?解答:这个问题需要澄清一个常见的误解。理想情况下,相反旋向的圆极化是完全正交的,理论损耗应为无穷大(完全接…...
