关于运算符你真的了解吗?

目录

前言

1. 基本四则运算符:加减乘除模(+ - * / %)

2. 增量运算符 += -= *= %=

3.自增/自减运算符 ++ --

4. 关系运算符== != < > <= >=

5. 逻辑运算符&& ||  !和& |

5.1 && ||  !

5.2 & |

6.位运算符& | ~ ^

7. 移位运算<<   >>    >>>

8. 条件运算符  表达式1 ? 表达式2 : 表达式3


前言

关于运算符你真的了解吗?可能你从未留意过运算符的细节,我会以题目和知识点梳理的形式和你一起查缺补漏,希望对你有帮助。


算术运算符

1. 基本四则运算符:加减乘除模(+ - * / %)

注意事项:
(1)都是二元运算符,使用时必须要有左右两个操作数。
(2)int / int 结果还是 int 类型,而且会向下取整。
(3)做除法和取模时,右操作数不能为 0。
(4)% 不仅可以对整型取模,也可以对 double 类型取模,但是没有意义,一般都是对整型             取模的。
(5)两侧操作数类型不一致时,向类型大的提升

1.题目:

System.out.println(5/2);
System.out.println((float) 5/2);
System.out.println(5/(float)2);
System.out.println((float) (5/2));

答案: 

 

 这题只要明白这两个知识点,就一定会写对,无需多讲。

知识点:(1)int / int 结果还是int类型,而且会向下取整。

                (2)操作数类型不一致时,向类型大的提升。

2.题目:

System.out.println(10%3);
System.out.println(-10%3);
System.out.println(10%-3);
System.out.println(-10%-3);

 答案: 

解析:

 

 3.题目:

System.out.println(10/0);

 答案:

 

 这题只要明白这个知识点,就一定会写对,无需多讲。

知识点: 做除法和取模时,右操作数不能为0。
 

2. 增量运算符 += -= *= %=

该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。
注意事项:
(1)操作符号会自动给你强制类型转换。
(2)只有变量才能使用该运算符,常量不能使用。

4.题目:

 

问:a+=b与a=a+b的区别。

解析:

 就是这个知识点:自动给你强制类型转换

3.自增/自减运算符 ++ --

注意:
(1)如果单独使用,【前置 ++ 】和【后置 ++ 】没有任何区别
(2)如果混合使用,【前置 ++ 】先 +1 ,然后使用变量 +1 之后的值,【后置 ++ 】先使用变量原来的值,表达式 结束时给变量+1
(3)只有变量才能使用自增 / 自减运算符,常量不能使用,因为常量不允许被修改

5.题目(了解)

int a=10;
 a=a++;
System.out.println(a);

答案: 

 

4. 关系运算符== != < > <= >=

 关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false

注意:当需要多次判断时,不能连着写,比如: 3 < a < 5 Java 程序与数学中是有区别的。

5. 逻辑运算符&& ||  !和& |

5.1 && ||  !

运算结果都是 boolean 类型。
逻辑运算符真值
&&
两个表达式都为真,结果才是真,只要有一个是假,结果就是假。
||两个表达式都为假,结果才是假,只要有一个是真,结果就是真。
真变假,假变真。  

 

短路求值
&& || 遵守短路求值的规则
对于 && , 如果 左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式 .
对于 ||, 如果 左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式 .  

 如:

System . out . println ( 10 > 20 && 10 / 0 == 0 ); 
System . out . println ( 10 < 20 || 10 / 0 == 0 );

我们都知道, 计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值.  

5.2 & |

System . out . println ( 10 > 20 & 10 / 0 == 0 ); // 程序抛出异常
System . out . println ( 10 < 20 | 10 / 0 == 0 ); // 程序抛出异常
与&& ||真值无区别,只是&和|会执行完所有语句。

6.位运算符& | ~ ^

1. 按位与 & : 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
2. 按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
3. 按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0
4. 按位异或 ^: 如果两个数字的二进制位相同 , 则结果为 0, 相异则结果为 1.
关于^
 
注意 :
& | 的操作数为整数 (int, short, long, byte) 的时候 , 表示按位运算 , 当操作数为 boolean 的时候 , 表 示逻辑运算.

7. 移位运算<<   >>    >>>

1. 左移 << : 最左侧位不要了 , 最右侧补 0。
2. 右移 >> : 最右侧位不要了 , 最左侧补符号位 ( 正数补 0, 负数补1)。
3. 无符号右移 >>>: 最右侧位不要了 , 最左侧补 0.(c语言没有,java有)
注意 :
1. 左移 1 , 相当于原数字 * 2. 左移 N , 相当于原数字 * 2 N 次方 .
2. 右移 1 , 相当于原数字 / 2. 右移 N , 相当于原数字 / 2 N 次方 .
3. 由于计算机计算移位效率高于计算乘除 , 当某个代码正好乘除 2 N 次方的时候可以用移位运算代替 .

8. 条件运算符  表达式1 ? 表达式2 : 表达式3

条件运算符只有一个 :
表达式 1 ? 表达式 2 : 表达式 3
表达式 1 的值为 true , 整个表达式的值为 表达式 2 的值 ;
表达式 1 的值为 false , 整个表达式的值为 表达式 3 的值 .
也是 Java 中唯一的一个 三目运算符 , 是条件判断语句的简化写法
6.题目
boolean a=true==true?false?true:false:true;
System.out.println(a);

答案:

 

解析:

 以上为我个人的小分享,如有问题,欢迎讨论!!!

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows10 下 Neo4j1.5.8 安装教程

前言 Neo4j 是一个高性能的、NOSQL 图形数据库&#xff0c;它将结构化数据存储在网络上而不是表中。基于磁盘的、具备完全的事务特性的 Java 持久化引擎&#xff0c;这里就不把他和常用关系型数据库做对比了。因为篇幅有限&#xff0c;我这里也是第一次使用&#xff0c;所以以…

“内卷之王”雪糕品牌,夏日营销如何花式出招?小红书数据分析!

酷夏已至&#xff0c;冰淇淋行业号称营销“内卷之王”&#xff0c;品牌们开始各显身手&#xff0c;掀起2023年的夏日冰淇淋大战。今年出现了哪些新的内容趋势&#xff1f;雪糕行业有哪些品牌营销趋势值得关注&#xff1f;笔者将通过小红书数据分析与内容洞察&#xff0c;带你一…

通过ETL自动化同步飞书数据到本地数仓

一、飞书数据同步到数据库需求 使用飞书的企业都有将飞书的数据自动同步到本地数据库、数仓以及其他业务系统表的需求&#xff0c;主要是为了实现飞书的数据与业务系统进行流程拉通或数据分析时使用&#xff0c;以下是一些具体的同步场景示例&#xff1a; 组织架构同步&#…

一个简单的 Android 版本目录(Version catalog)实现指南

一个简单的 Android 版本目录实现指南 使用 TOML 格式 在本文中&#xff0c;我们将探讨版本目录以及如何实现它。 版本目录 Gradle 版本目录使您能够以可扩展的方式添加和维护依赖项和插件。因此&#xff0c;不必在各个构建文件中硬编码依赖项名称和版本&#xff0c;而是在目…

STM32 中断优先级管理(一)

STM32 NVIC 中断优先级管理 CM3内核支持256个中断&#xff0c;其中包含了16个内核中断和240个外部中断&#xff0c;并且有256级的可编程中断设置。 但STM32并没有使用CM3内核的全部东西&#xff0c;只用了一部分。 STM32有84个中断&#xff0c;包括16个内核中断和68个可屏蔽…

从零开始学习CTF

前言 CTF简介 中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式 竞赛模式 解题模式&#xff1a; 在解题模式…

使用PHP实现登录注册功能的完整指南

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。多年电商行业从业经验&#xff0c;对系统架构&#xff0c;数据分析处理等大规模应用场景有丰富经验。 &#x1f3c6;本文已收录于PHP专栏&#xff1a;PHP…

如何高效进行客户管理?这几点很重要

管理客户是任何业务的重要组成部分。通过建立良好的关系&#xff0c;提供良好的客户服务并满足客户的需求&#xff0c;可以帮助吸引新客户并保留现有客户&#xff0c;这对于业务的长期成功非常重要。 因此&#xff0c;本篇文章将为您介绍如何做客户管理&#xff0c;客户管理的…

Jmeter接口测试工具的一些使用小技巧

如何使用英文界面的JMeter Jmeter启动时会自动判断操作系统的locale 并选择合适的语言启动&#xff0c;所以&#xff0c;我们启动jmeter后&#xff0c;其会出现一个倍感亲切的中文界面。但由于jmeter本身的汉化工作做得不好&#xff0c;你会看到有未被汉化的选项及元件的参数。…

华为认证HCIA-HCIP-HCIEdatacom题库解析+机构视频+实验

题库包含有2023年最新HCIA-datacom题库、HCIP-datacom题库&#xff0c;HCIE-datacom题库&#xff0c; 云计算HCIA&#xff0c;HCIP题库&#xff0c;云服务HCIA&#xff0c;HCIP题库&#xff0c;华为存储HCIP题库&#xff0c;华为安全HCIP题库 &#xff0c;学习笔记&#xff0c;…

卡尔曼滤波算法原理及示例

例程:物体做匀速运动每秒运动1m,观测器观测方差为1m

华为数通HCIP-ISIS原理与配置

IS-IS的基本概念 isis&#xff08;中间系统到中间路由协议&#xff09; 链路状态路由协议、IGP、无类路由协议&#xff1b; IS-IS是一种链路状态路由协议&#xff0c;IS-IS与OSPF在许多方面非常相似:运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此&#xff0c;然后建…

《人工智能安全》课程总体结构

1 课程内容 人工智能安全观&#xff1a;人工智能安全问题、安全属性、技术体系等基本问题进行了归纳整理。人工智能安全的主要数据处理方法&#xff0c;即非平衡数据分类、噪声数据处理和小样本学习。人工智能技术赋能网络空间安全攻击与防御&#xff1a;三个典型实例及攻击图…

2-vi和vim的使用

vi和vim的区别 vi 是linux系统中内置的文本编辑器vim具有程序编辑能力 vi和vim常用的三种模式 正常模式 使用vim打开一个文件&#xff0c;就默认进入正常模式可以使用方向键【上下左右】来移动光标可以使用【删除字符/删除整行】来处理文件内容也可以使用【复制/粘贴】快捷键…

PyToch 深度学习 || 3. 卷积神经网络 | 3.1 深度学习中的卷积操作

深度学习中的卷积操作 文章目录 深度学习中的卷积操作1. 卷积2. 一维卷积2.1 使用nn.functional库中conv1d2.2 使用nn库中的Conv1d 3. 二维卷积3.1 nn.functional.conv2d3.2 nn.Conv2d 1. 卷积 加权求和是一种非常重要的运算&#xff0c;可以整合局部数字特征进而是提取局部信…

BI系统能给企业带来什么?看完本文就懂了

这几年大家都在转型数字化&#xff0c;而数字化运营需要依赖BI系统来进行数据分析和决策支持&#xff0c;从而提升企业效率和竞争力&#xff0c;因此在转型数字化的过程中&#xff0c;必然少不了BI系统。 BI系统是一种可以高效智能地收集和整合多业务系统数据&#xff1b;实现大…

L---泰拉瑞亚---2023河南萌新联赛第(三)场:郑州大学

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 示例1 输入 1 10 3 5 输出 3 说明 只有一把回旋镖&#xff0c;你可以先打两次伤害为3的&#xff0c;再打一次倾尽全力的&#xff0c;造成的伤害为5。总伤害为33511&#xff0c;即可获得胜…

string类的模拟实现

文章目录 string类的模拟实现string基本框架的实现operator的实现string常用函数的实现 string类的模拟实现 前文对于string的常用函数做了讲解&#xff0c;由于string是一个面试官常考的点&#xff0c;总喜欢让模拟实现string类&#xff0c;下面来模拟实现一下string&#xf…

Alluxio技术分析

Alluxio技术分析 Alluxio: A Virtual Distributed File System Alluxio主要解决的基于磁盘的分布式存储层性能低下的问题&#xff0c;通过alluxio提供的分布式内存来加速数据分析。 Alluxio的这种通过内存加速数据的想法其实是有明确的使用场景的&#xff1a; Immutable da…

【WEB开发】Java获取高德POI(关键词搜索法)实现数据展示

前言 该篇文章是关键词搜索法获取高德poi&#xff0c;但鉴于无法突破200条记录的上限&#xff0c;所以采用了本方法进行区/县循环检索。开始之前我们首先需要明白一些常识 poi是兴趣点&#xff0c;它本身除了经纬度&#xff0c;还记录了一些信息&#xff0c;如名称、地址、联…