Java的运算操作
个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【JavaSE_primary】
文章目录
- 算术运算符
- 增量运算符
- +=
- 注意
- 自增自减运算符
- 关系运算符
- 逻辑运算符
- 逻辑与&&
- 逻辑或||
- 逻辑非!
- 短路求值
- 位运算符
- 按位与&
- 按位或|
- 按位取反~
- 按位异或^
- 移位运算符
- 左移<<
- 右移>>
- 条件运算符
在Java中,根据我们的需要,有多种类型的操作符可以对操作数进行运算,不仅仅只有算术运算符(加减乘除)这一种运算符,患有其它类型的运算符。
Java运算符有以下几种:
**算术运算符(即+-×/)、增量运算符(+= -+ *= %=)、自增自减运算符、关系运算符(><==)、逻辑运算符、位运算符、移位运算符、条件运算符。
下面我们就一一来介绍这几种运算符。
算术运算符
算术运算符无非就是我们最常用的四则运算法则,即加减乘除(+ - * /),还有一种就是%
。
由于(加减乘除)比较简单,这里我举几个例子一笔带过。
System.out.println(2*4);System.out.println(4-2);System.out.println(5*3);System.out.println("===========");System.out.println(10/3);System.out.println(10/-3);System.out.println((-10/3));System.out.println(-10/-3);
- 当两侧操作数类型不一致时,会向大的提升。
System.out.println(1+0.8);
请看对于/
操作符我这样用可不可以呢?请看:
System.out.println(4/0);
来看运行结果:
可以看到直接报错了,这是因为在Java中,分母是不可以为0的。
再来看一下%
运算符:
System.out.println(10%3);System.out.println(10%-3);System.out.println(-10%3);System.out.println(-10%-3);
注意,对于%运算符两边的操作数是可以有浮点数出现
的,这一点和C语言的确是不一样的(C语言中的%运算符两边的操作数是坚决不能出现浮点数的)。所以,%
不仅可以对整型进行取模,也可以对double类型进行取模。
请看:
增量运算符
+=
我们先来看一个简单的。
int a = 10;int b = 10;int c = 10;int d = 10;int e = 8;a += 5;System.out.println( a);b -= 3;System.out.println(b);c *= 2;System.out.println(c);d /= 2;System.out.println(d);e %= 3;System.out.println(e);
注意
我们来看看这种写法:
我们可以看到会出错。
那这样写呢?
这样写就不会出错了。可以正常运行。
这里并不会报错,这也时该运算符特殊的地方:该运算符会帮我们进行类型转换
。
自增自减运算符
在Java中,对于++和--
运算符虽然与C语言的++和--
差不多,但是还是有一些细节不一样的地方
。
int a = 10;--a;System.out.println(a);
这一点和C语言是一样的。
但是注意这里
,请看:
int a = 10;int b = a--;System.out.println(b);
这是后置减减的a赋值给了b
。
结果b的值是10.
但是如果是前置减减的a赋值给了b
呢?
int a = 10;int b = --a;System.out.println(a);
我们会发现结果是9。
但是注意这里
,请看:
int a = 10;a = a--;System.out.println(a);
如果按照C语言来的话,这里结果应该是9。但是请看结果:
看,发现结果竟然是10,这也是C语言和Java不一样的地方,记住就好,只不过两种语言处理的方式不同罢了。
还有一点:++和--运算符是用来操作变量的,而不是用来操作常量的。
关系运算符
在Java中,关系运算符主要有6个:== != <= >= < >,其运算结果只有俩个,要么是true,要么是false。
int a = 10;int b = 20;System.out.println(a>b);System.out.println(a<b);System.out.println(a==b);System.out.println(a!=b);System.out.println(a<=b);System.out.println(a>=b);
当然,需要判断的是,当需要多次判断的时候,我们是不可以连这些的,比如:4 < a < 6
。
逻辑运算符
逻辑运算符主要是三种:&& || !,其运算结果均为boolean
类型。
逻辑与&&
语法:表达式1 && 表达式2.并且左右表达式必须是boolean类型的结果,只有左右表达式同时为真时,结果才为真,否则就是假
。
举个例子:
int a = 10;int b = 20;System.out.println(a == 10 && b == 20);System.out.println(a > 10 && b < 20);
逻辑或||
逻辑或:
语法规则:表达式1 || 表达式2.并且左右表达式必须是boolean类型的结果,只有左右表达式只要有一个是真的,结果就是真的,同时为假结果才为假
。
int a = 10;int b = 20;System.out.println(a == 10 || b == 20);System.out.println(a == 10 || b < 20);System.out.println(a == 100 || b == 200);
逻辑非!
逻辑非的语法规则:!表达式。非真即假,非假即真。
int a = 1;System.out.println(!(a == 1));System.out.println(!(a != 1));
短路求值
我们先来看一段代码吧:
public static void main(String[] args) {//短路求值System.out.println(10 > 20 && 10/0 == 0);System.out.println(10 < 20 || 10/0 == 0);}
运行一下:
我们发现程序成功运行起来了。但是我们已经知道10/0这个表达式,会出现异常而导致程序报错,但是程序成功的运行了起来。这个就是短路求值的作用。
短路求值规则,
对于&&而言:如果左侧表达式为false,则整个表达式的结果一定为false,右侧的表达式不需要进行运算。
对于||而言:如果左侧表达式为true,则整个表达式的结果一定为true,右侧的表达式不需要进行运算。
对于&和|:如果表达式结果为boolean时,也表示逻辑运算,但与&&和||相比,它们不支持短路求值。
System.out.println(10 < 20 & 1 > 0);System.out.println(10 < 20 | 1 >0);
注意了请看下段代码
:
System.out.println(10 > 20 & 10/0 == 0);System.out.println(10 < 20 | 10/0 ==0);
我们发现程序会进行报错,说明了10/0 == 0
在这里依然会被执行。
所以建议当我们想用逻辑与和逻辑或的时候,不要用&和|,直接用&&和||就好了,这样容易区分(因为&和|也是位运算的符号)。
位运算符
位运算就是按照二进制位进行每一位的运算。
位运算符主要有4个:& | ~ ^
按位与&
规则:两个二进制位只有相同时才为1,其余情况均为0。
int a = 10;int b = 20;System.out.println(a & b);
按位或|
int a = 10;int b = 20;System.out.println(a | b);
注意:当&和|的操作数为整数(int,short,long,byte)的时候,表示按位运算
,当操作数为boolean的时候,表示逻辑运算。
按位取反~
按位取反规则该位为0则改为1,该位为1则改为0。
这里依然有几点需要大家注意
:
1.0x前缀的数字为十六进制数字,十六进制可以看成时二进制的简化表示方式,一个十六进制数字对应4个二进制位。
2.printf能够格式化输出内容,%x表示按照十六进制输出。
int c = 0xf;System.out.printf("%x\n",~a);
按位异或^
规则:如果两个数字的二进制位相同,则表示结果为0,相异则结果为1.()即相同为0,不同为1
。相同的两个数之间进行异或,结果为0。
举个例子:
int a = 0x1;int b=0x2;System.out.printf("%x\n",a^b);
移位运算符
移位运算符有三个:<< >> >>>
,且均为二元运算符,按照二进制比特位进行运算。
左移<<
规则:最左侧不要了,最有侧补0.
例如:
int a = 0x10;System.out.printf("%x\n",a<<1);
注意:最终结果是按照十六进制来进行运算的;另一方面,向左移位的时候,丢弃的是符号位,因此正数左移可能会变成负数;左移统一在右边补0。
右移>>
右移:最右侧不要了,最左侧补符号位(正数补0,负数补1)。
int a = 0x10;System.out.printf("%x\n",a>>1);
还有一种右移是无符号右移:不管符号位是1还是0,统一补0。
还是来举个例子:
int b = -1;System.out.println(b >> 1);System.out.println(b >>> 1);
分割线------------------------------------------------------------------------------------------------
条件运算符
条件运算符就一个:
即表达式1?表达式2:表达式3
当表达式1的结果为true是,整个表达式的值为
表达式2
的值,当表达式1的结果为false是,整个表达式的值为表达式3
的值。
这是Java中唯一的一个三目运算符。
int a = 10;int b = 20;int max = a>b?a:b;System.out.println(max);
注意:表达式不能单独存在,其结果必须要被使用。比如:
以上就是Java运算符的一些操作,就到这里吧。
再见啦!!!
相关文章:

Java的运算操作
个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【JavaSE_primary】 文章目录算术运算符增量运算符注意自增自减运算符关系运算符逻辑运算符逻辑与&&逻辑或||逻辑非!…...

基于OBD系统的量产车评估测试(PVE)
在轻型汽车污染物排放限值及测量方法(中国第六阶段)中,除了对汽车尾气排放等制定了更为严格的限制之外,也在OBD系统认证项目中增加了新的要求——量产车评估(Production Vehicle Evaluation)测试。该测试由…...

【蓝桥杯集训10】Tire树 字典树 最大异或对专题(3 / 3)
目录 字典树模板 1、插入操作 2、查询操作 143. 最大异或对 - trie 二进制 3485. 最大异或和 - 前缀和Trie滑动窗口 字典树模板 活动 - AcWing 字典树:高效存储和查找字符串集合的数据结构 son[节点1地址][值]节点2地址 —— 节点1的子节点为节点2cnt[节点地…...

docker部署zabbix6.2.7+grafana
目录 1、下载docker 2、下载相关镜像文件 3、创建一个供zabbix系统使用的网络环境 4、创建一个供mysql数据库存放文件的目录 5、启动mysql容器 6、为zabbix-server创建一个持久卷 7、启动zabbix-server容器 8、创建语言存放目录 9、启动zabbix-web容器 10、启动zabbix…...

【Java开发】JUC基础 04:Synchronized、死锁、Lock锁
1 概念介绍并发:同一个对象被多个线程同时操作📌 线程同步现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是,排队…...

离散数学---期末复习知识点
一、 数理逻辑 [复习知识点] 1、命题与联结词(否定¬、析取∨、合取∧、蕴涵→、等价↔),命题(非真既假的陈述句),复合命题(由简单命题通过联结词联结而成的命题) 2、命题公式与赋值(成真、成假)&#x…...

在线安装ESP32和ESP8266 Arduino开发环境
esp32和esp8266都是乐鑫科技开发的单片机产品,esp8266价格便宜开发板只需要十多块钱就可以买到,而esp32是esp8266的升级版本,比esp8266的功能和性能更强大,开发板价格大约二十多元就可以买到。 使用Arduino开发esp32和esp8266需要…...

【Python实战】激情澎湃,2023极品劲爆舞曲震撼全场,爬虫一键采集DJ大串烧,一曲醉人女声DJ舞曲,人人都听醉~(排行榜采集,妙啊~)
导语 哈喽!大家好。我是木木子吖~今天给大家带来爬虫的内容哈。 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 今天教大家Python爬虫实战一键采集大家喜欢的DJ舞曲哦! …...

[SSD综述 1.5] SSD固态硬盘参数图文解析_选购固态硬盘就像买衣服?
版权声明:付费作品,未经许可,不可转载前言SSD (Solid State Drive),即固态硬盘,通常是一种以半导体闪存(NAND Flash)作为介质的存储设备。SSD 以半导体作为介质存储数据&…...

SAP Insurance Analyzer
SAP Insurance Analyzer 是一款用于保险公司财务和风险管理的软件。SAP Insurance analyzer 支持基于 IFRS 17 或 Solvency II 的保险合同估值和计算要求。SAP Insurance Analyzer 于 2013 年 5 月推出,为源数据和结果数据集成了一个预配置的保险数据模型。 源数据…...

自动化测试 ——自动卸载软件
在平常的测试工作中,经常要安装软件,卸载软件, 即繁琐又累。 安装和卸载完全可以做成自动化。 安装软件我们可以通过自动化框架,自动点击Next,来自动安装。 卸载软件我们可以通过msiexec命令行工具自动化卸载软件 用msiexec 命令来卸载软件 …...

05 封装
在对 context 的封装中,我们只是将 request、response 结构直接放入 context 结构体中,对应的方法并没有很好的封装。 函数封装并不是一件很简单、很随意的事情。相反,如何封装出易用、可读性高的函数是非常需要精心考量的,框架中…...
clean
clean code 记得以前写过这题,写的乱七八糟,分析来分析去。 后悔应该早点写代码,leetcode大一就该刷了。 https://leetcode.cn/problems/plus-one/submissions/ class Solution { public:vector<int> plusOne(vector<int>&…...

佛科院计算机软件技术基础——线性表
一、基础知识了解:结构体的理解:我们知道整型是由1位符号位和15位数值位组成,而就可以把结构体理解为我们定义的数据类型,如:typedef struct {int data[2]; //存储顺序表中的元素int len; …...
linux下终端操作mysql数据库
目录 一.检查mysql是否安装 1. 查看文件安装路径 2. 查询运行文件所在路径(文件夹地址) 二.登录mysql 三.列出mysql全部用户 四.常用指令 1.查看全部数据库 2.选择数据库 …...
MySQL参数优化之thread_cache_size
1.thread_cache_size简介 每建立一个连接,都需要一个线程来与之匹配,此参数用来缓存空闲的线程,以至不被销毁,如果线程缓存中有空闲线程,这时候如果建立新连接,MYSQL就会很快的响应连接请求。 show statu…...
gRPC服务健康检查(二):gRPC健康检查协议详解
gRPC健康检查协议健康检查用于检测服务端能否正常处理rpc请求,客户端对服务端的健康检查可以点对点进行,也可以通过某些控制系统(如负载平衡)进行。客户端可以根据服务端返回的状态执行对应的策略。因为GRPC服务可以用于简单的客户…...

Android系统10 RK3399 init进程启动(四十七) Android init 进程整体代码逻辑简述
配套系列教学视频链接:安卓系列教程之ROM系统开发-百问100ask说明系统:Android10.0设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)前言本文简单描述一下android init祖先进程启动的基本执行流程,让大家有一个整…...
CSDN 编程竞赛三十二期题解
竞赛总览 CSDN 编程竞赛三十二期:比赛详情 (csdn.net) 竞赛题解 题目1、传奇霸业 传奇霸业,是兄弟就来干。小春(HP为a)遇到了一只黄金哥布林(HP为x)。小春每次能对哥布林造成b点伤害,哥布林…...
Kubernetes 中的 Pod Hook
Pod Hook 我们知道Pod是Kubernetes集群中的最小单元,而 Pod 是有容器组组成的,所以在讨论 Pod 的生命周期的时候我们可以先来讨论下容器的生命周期。 实际上 Kubernetes 为我们的容器提供了生命周期钩子的,就是我们说的Pod Hook,…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...