11、关系运算符、逻辑运算符(讲解 和 的区别)、赋值表达式、三目表达式、运算符优先级(超详细版本)+结合性的分析

这里写目录标题

  • 一、关系运算符(比较运算符)
  • 二、⭐逻辑运算符
    • 1、 && 和 &
    • 2、|| 或 |
    • 3、!
    • 4、^
  • 三、赋值运算符
  • 四、三目运算符(条件运算符)
  • 五、运算符优先级

在讲之前先明确几个概念:
1、单目运算符是只有一个变量(or 常量)在左侧或者右侧的,而双目运算符是左右两边都有变量(or 常量)的,eg:10、算数运算符(以 ‘/’、‘%’、‘++’为主去讲解)(Java超详细版本)这篇文章中,a++、–a是单目运算符,而a + b、a % b是双目运算符,今天的文章中“?:”是三目运算符。
 
2、Java中运算顺序大部分都是从左往右的(左结合性),只有单目运算符、赋值运算符和三目运算符是从右往左的(右结合性),敲重点啦,就我个人理解而言,所谓的结合性是指两个或两个以上相同的运算符出现,才需要区分执行顺序(可能有歧义),赋值运算符和三目运算符看下面的文章即可,单目运算符的就不写了,差不多意思。

一、关系运算符(比较运算符)

关系运算符的结果都是boolean型,要么是true,要么是false,其常用在if结构的条件或者循环结构的条件中。
在这里插入图片描述
除了最后一个到面向对象的时候在详细讲解,其他都很简单,和数学上的差不多,就不花时间写了。
在这里插入图片描述

使用细节:
① “==”不能误写成“=”。
② 结果只能为true或者false。
③ 我们称a >= b、 a == b等为关系表达式。

二、⭐逻辑运算符

这里的&、|、^只研究结果是true和false的情况,不涉及位运算的情况,有兴趣的可以看一下:java中的“&”、“|”、“^”、“~”运算符怎么用?+ Java 运算符,我后期写进制的笔记的时候可能会再次详细介绍这方面,这里就先不介绍了,怕写文章写的很糊涂。
在这里插入图片描述
先直接来规则,其实你记住就可以了(背多芬):

名称语法特点
短路与 &&条件1 && 条件2两个条件都为true,结果为true,其余情况为false
逻辑与 &条件1 & 条件2同上
短路或 ||条件1 || 条件2只要有true就为true,没有true就为false
逻辑或 |条件1 | 条件2同上
取反!!条件如果条件本身成立,结果转变成false,否则为true
异或^条件1 ^ 条件2若两者不同则true,否则为false

1、 && 和 &

为什么Java中有“&&”和“&”呢?主要是因为应用场景不同,但是实际工作中&& 和 || 更常用。
&& 和 & 的使用区别:
Ⅰ、&&:如果第一个条件为false,则第二个条件不会进行判断,直接输出结果false,避免了不必要的条件评估,效率更高。
Ⅱ、&:不管第一个条件是否为false,第二个条件都要进行判断,效率低。

上代码:
在这里插入图片描述

从代码截图可以看出,两个if判断中都没有同时满足true的条件,所以执行不了if,改成执行else里面的语句。那么两者区别在哪呢?我们可以看到结果截图中,初始b = 2,c = 2,而最后b = 2,c却等于3了,这就是由于 && 左边的条件已经判断为false,不会再运行后面的条件,导致b没有变化,而&不管左边是不是false,都要执行右边的条件,所以c变化为3了。

2、|| 或 |

|| 和 | 的使用区别:
Ⅰ、||:如果第一个条件为true,则第二个条件不会进行判断,直接输出结果true,避免了不必要的条件评估,效率更高。
Ⅱ、|:不管第一个条件是否为true,第二个条件都要进行判断,效率低。
(和上面一样的道理,不举例子了。)

3、!

其实就是取反,!true --> false,!false --> true。
在这里插入图片描述

4、^

异或异或,必须左右要异才行,所以异就会有true,否则为false。
在这里插入图片描述
下面是韩顺平老师出的几道题,大家可以练练手:

int x = 5;
int y = 5;
if( x++ == 6 & ++y == 6)x = 11;
System.out.println("x = " + x + ", y = " + y);		//x=6, y=6int x = 5;
int y = 5;
if( x++ == 6 && ++y == 6)x = 11;
System.out.println("x = " + x + ", y = " + y);		//x=6, y=5int x = 5;
int y = 5;
if( x++ == 5 | ++y == 5)x = 11;
System.out.println("x = " + x + ", y = " + y);		//x=11, y=6int x = 5;
int y = 5;
if( x++ == 5 || ++y == 5)x = 11;
System.out.println("x = " + x + ", y = " + y);		//x=11, y=5boolean x = true;
boolean y = false;
short z = 46;
if( (z++ == 46) && (y = true))z++;
if( (x=false) || (++z == 49))		//记住“||”左边是false的时候,要判断右边是否为true/falsez++;
System.out.println("z = " + z);		//50

(答案在语句后面,要记住上面的规则哦,若想不出来可以在评论区提问)

三、赋值运算符

单一的赋值是 “=”,下面的图片上是复合赋值运算符。
在这里插入图片描述
其实很简单,提示一下上面的<<、>>>、&等的是位运算,有学过进制的可以看这个链接了解:
Java运算符 | 菜鸟教程

使用细节:
① a += 3 等价于 a = a+3,其他也一样。
② 复合赋值运算符会进行类型转换。

byte b = 2;
b += 3;     //其实质:b = (byte)(b+3)
b++;        //b = (byte)(b+1)

什么意思呢?我们之前在类型转换的文章中就提过,byte、short、char任意组合最终得到的结果类型都为int型,这是没错的,但是赋值运算符会将这个结果强制转换成做左边变量本身的类型(前提是不超过精度范围),所以最终 int --> byte。
③ 运算顺序从右往左(右结合),请看图片。
图1是简单运用(可能和上边结合性的那段话有点矛盾,那就看第二张图吧)
在这里插入图片描述
图2是我觉得能代表右结合性的例子,我们能运用就行,不必太纠结概念。
在这里插入图片描述

四、三目运算符(条件运算符)

基本语法:条件表达式 ? 表达式1 : 表达式2
运算规则:
Ⅰ、如果条件表达式为true,运算后的结果是表达式1,表达式2不会执行。
Ⅱ、如果条件表达式为false,运算后的结果是表达式2,表达式1不会执行。
直接看代码理解喽:
在这里插入图片描述
使用细节:
① 表达式1和表达式2的结果要符合左边变量的精度范围,超过就会报错。
②三目运算符本质上是 if – else --语句

int result = a > b ? a++ : b--;//等价于
if(a > b)result = a++;
elseresult = b--;

③韩顺平老师的课上说三目运算符是从左往右的,但是我查资料的时候觉得不是,所以我还是按照自己的理解来,就认为三目运算符是从右往左的(右结合性)。
在这里插入图片描述

五、运算符优先级

1、运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
 Ⅰ、从上往下优先级降低,第一行优先级最高,如果想提升优先级可以用(),最后一行优先级最低。
 Ⅱ、若同行的出现在表达式中,按照左边的 L->R 或者 R->L 进行计算即可。
2、只有单目运算符,赋值运算符、三目运算符是从右往左运算的。

在这里插入图片描述

本人正在B站跟着韩顺平老师学Java(非广告),所以做个笔记仅供学习,文章虽标为原创,但大体思路是韩顺平老师的授课思路,在此基础上加上了自己的理解,不喜勿喷哦。
大家一起学,一起进步!!
各位宝子们如果觉滴还不错的话,可以点个赞 or 收个藏 or 打个赏哦,佛系博主一个。
今天吃钵钵鸡啦哈哈哈哈哈哒!!!干饭去。

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

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

相关文章

【人工智能基础】GAN与WGAN实验

一、GAN网络概述 GAN&#xff1a;生成对抗网络。GAN网络中存在两个网络&#xff1a;G&#xff08;Generator&#xff0c;生成网络&#xff09;和D&#xff08;Discriminator&#xff0c;判别网络&#xff09;。 Generator接收一个随机的噪声z&#xff0c;通过这个噪声生成图片…

阿里开源编程大模型 CodeQwen1.5:64K92编程语言,Code和SQL编程,评测接近GPT-4-Turbo

前言 阿里巴巴最近发布的CodeQwen1.5模型标志着其在编程语言模型领域的一次重大突破。这款开源模型不仅支持高达92种编程语言和64K的上下文长度&#xff0c;而且在多项性能评测中显示出接近或超过当前行业领导者GPT-4-Turbo的能力。 Huggingface模型下载&#xff1a;https://h…

Boost库的使用

1 下载与安装 1.1 下载 网址&#xff1a;Boost C Libraries 进入后选择自己需要的版本安装即可 1.2 安装 1.2.1 解压 1.2.2 编译安装 双击bootstrap.bat 这一步完成后会生成一个b2.exe文件 双击b2.exe文件运行&#xff08;此步需要花费较长的时间&#xff09; 之后再stag…

双向链表(双向带头循环)的增删查改的实现(简单易懂)

一&#xff1a;双向链表的概念 每个节点除开存有数据&#xff0c;还有一个指针指向前一个节点&#xff0c;一个指针指向后一个节点&#xff0c;尾节点和哨兵位互相指向&#xff0c;从而形成一个循环。 二&#xff1a;双向链表的实现第一点&#xff1a; 本文采用三个文件进行实…

GIS数据—1984-2020中国1km人造夜间灯光观测数据

夜间灯光观测数据&#xff08;Nighttime Light,NTL&#xff09;是评估人类活动边界的常用手段&#xff0c;目前&#xff0c;该数据已经广泛应用于城市范围、不透水面、基础设施建设等一系列过程。今天&#xff0c;小编要带来的是长时间序列中国区域边界的夜间灯光观测数据。 数…

springcloud -nacos实战

一、nacos 功能简介 1.1.什么是Nacos&#xff1f; 官方简介&#xff1a;一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 Nacos的关键特性包括&#xff1a; 服务发现和服务健康监测动态配置服务动态DNS服务服务及其元数…

VMware配置Kali linux + 物理机连接Xshell

VMware 配置 kali linux 首先需要先安装VMware Workstation 我是在Windows 安装的 VMware Workstation Pro 17 虚拟化&#xff0c;产品密钥。。这里不做多说了 下载kali linux 这里我下载的是kali-linux-2024.1 Note&#xff1a;这里选Virtual Machines&#xff0c;建议不要…

景源畅信:抖音小店的商品怎么同步到橱窗?

在数字营销的海洋中&#xff0c;抖音小店与橱窗的同步操作无疑是商家们关注的焦点。这不仅能增加商品的曝光度&#xff0c;还能提高交易的可能性。那么&#xff0c;如何将抖音小店的商品同步到橱窗呢? 一、核心步骤解析 要实现商品从抖音小店同步到橱窗&#xff0c;你需要确保…

【Linux 网络】网络编程套接字 -- 详解

⚪ 预备知识 1、理解源 IP 地址和目的 IP 地址 举例理解&#xff1a;&#xff08;唐僧西天取经&#xff09; 在 IP 数据包头部中 有两个 IP 地址&#xff0c; 分别叫做源 IP 地址 和目的 IP 地址。 如果我们的台式机或者笔记本没有 IP 地址就无法上网&#xff0c;而因为…

Unity引擎是什么?有哪些优点

大家好&#xff0c;我是咕噜土豆&#xff0c;很高兴又和大家见面了。今天我们一起来了解一下Unity引擎和它有哪些优点。 首先带大家了解什么是Unity引擎 Unity引擎是一款由Unity Technologies开发的跨平台游戏开发引擎&#xff0c;广泛用于创建2D和3D游戏以及其他交互式内容&…

C++动态内存区域划分、new、delete关键字

目录 一、C/C中程序的内存区域划分 为什么会存在内存区域划分&#xff1f; 二、new关键字 1、内置类型的new/delete使用方法&#xff1a; 2、new和delete的本质 一、C/C中程序的内存区域划分 为什么会存在内存区域划分&#xff1f; 因为不同数据有不同的存储需求&#xff0…

【SpringBoot记录】从基本使用案例入手了解SpringBoot-数据访问(1)

前言 在程序开发尤其是网页应用开发中&#xff0c;数据访问是必不可少的。通过前面的基本案例我们完成了一个简单的SpringBoot Web应用并对自动配置原理有了一定了解&#xff0c;本节在上述案例基础上&#xff0c;继续编写数据访问案例&#xff0c;将通过SpringBoot中数据访问…

音视频开发6 音视频录制原理和播放原理

音视频录制原理 音视频播放原理

# 电脑突然连接不上网络了,怎么办?

电脑突然连接不上网络了&#xff0c;怎么办&#xff1f; 一、原因分析&#xff1a; 1、IP 地址冲突 2、DNS 解析出现问题。 3、电脑网络设置是否打开了【移动热点】或【飞行模式】。 4、【WLAN AutoConfig】服务是否打开。 5、无线网卡驱动损坏。 6、检查 WIFI 开关是否…

HTML+VUE3组合式+ELEMENT的容器模板示例(含侧栏导航,表格,...)

一个简单的在html中使用Vue3及Element-plus vue-icons的整合示例&#xff1a; 一、示例截图 二、文件代码 直接复制到html文件在浏览器打开即可预览 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title&g…

CCleaner系统优化与隐私保护工具,中文绿色便携版 v6.23.11010

01 软件介绍 CCleaner 是一款高级的系统优化工具&#xff0c;其设计宗旨在于彻底清理 Windows 操作系统中积累的无用文件和冗余的注册表项。此举旨在显著提升计算机的运行效率并回收磁盘空间。该软件拥有高效的能力&#xff0c;可以清除包括临时文件、浏览器缓存及其历史记录在…

08 - hive的集合函数、高级聚合函数、炸裂函数以及窗口函数

目录 1、集合函数 1.1、size&#xff1a;集合中元素的个数 1.2、map&#xff1a;创建map集合 1.3、map_keys&#xff1a; 返回map中的key 1.4、map_values: 返回map中的value 1.5、array 声明array集合 1.6、array_contains: 判断array中是否包含某个元素 1.7、sort_a…

UIKit之UIButton

功能需求&#xff1a; 点击按钮切换按钮的文字和背景图片&#xff0c;同时点击上下左右可以移动图片位置&#xff0c;点击加或减可以放大或缩小图片。 分析&#xff1a; 实现一个UIView的子类即可&#xff0c;该子类包含多个按钮。 实现步骤&#xff1a; 使用OC语言&#xf…

HCIP的学习(14)

过滤策略—filter-policy ​ 思科中&#xff1a;分发列表 ​ 过滤策略是只能够针对于路由信息进行筛选&#xff08;过滤&#xff09;的工具&#xff0c;而无法针对于LSA进行过滤。 在R4的出方向上配置过滤策略&#xff0c;使得R1不能学习到23.0.0.0/24路由信息1、抓取流量 […

Sping源码(七)—ConfigurationClassPostProcessor ——@PropertySources解析

序言 先来简单回顾一下ConfigurationClassPostProcessor大致的一个处理流程&#xff0c;再来详细的讲解PropertySources注解的处理逻辑。 详细的步骤可参考ConfigurationClassPostProcessor这篇帖子。 流程图 从获取所有BeanDefinition -> 过滤、赋值、遍历 -> 解析 -&…