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,…...
Linux操作系统安装MySQL(rpm安装)
Linux操作系统安装MySQL(rpm安装)1 背景2 环境说明3 准备工作3.1 端口查看3.2 检查安装3.3 创建MySQL用户和组4 MySQL安装4.1 下载MySQL4.2 解压安装包4.3 安装MySQL4.4 初始化MySQL4.5 启动MySQL4.6 设置MySQL初始密码4.6.1 查看数据库初始密码4.6.2 更…...
MySQL高级第二讲
目录 二、MySQL高级02 2.1 触发器 2.1.1 触发器介绍 2.1.2 创建触发器 2.2 MySQL的体系结构 2.3 存储引擎 2.3.1 存储引擎概述 2.3.2 各种存储引擎特性 2.3.3 InnoDB 2.3.4 MyISAM 2.3.5 MEMORY 2.3.6 MERGE 2.3.7 存储引擎的选择 2.4 优化sql 2.4.1 查看sql执行…...
凸优化专题1
多变量函数的求导与求梯度/矩阵求导 1. 导数 定义: 设f:Rn→Rm,且x∈intdomf,则f在点x的导数(或称Jacobian)记为矩阵Df(x)∈Rmnf:\R^n \rightarrow \R^m, 且x\in \mathbf{int}\ \mathbf{dom} f, 则f 在点x的导\\数(或称Jacobian)记为矩阵 Df(x) \in \R^{m\times n}f:Rn→Rm,且…...
【蓝桥杯每日一题】递推算法
🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 蓝桥杯 🌙我与杀戮之中绽放,亦如黎明的花…...
Unity性能优化: 性能优化之内存篇
前言 本文和传统的内存优化不一样,不是讲如何降低内存占用,而是讲编程开发中要注意的内存问题以及一些内存技术的演变与原理。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀 1: Application进程…...
华为OD机试题,用 Java 解【内存资源分配】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...
微服务之Nacos注册与配置
🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 …...
Android 动画详解
Android动画的分类与使用学习Android必不可少的就是动画的使用了,在Android版本迭代的过程中,出现了很多动画框架,这里做一个总结。Android动画类型分类逐帧动画【Frame Animation】,即顺序播放事先准备的图片。补间动画【Tween A…...
Linux -- 程序 进程 线程 概念引入
程序与进程 :程序 :什么是程序 ???伪官方 : 二进制文件,文件存储在磁盘中,例如 /usr/bin 目录下 。 是静态。 简单讲 :# 我们都学习了语言,比如下面这串代…...
Android ART dex2oat
一、什么是dex2oat Dex2oat (dalvik excutable file to optimized art file) ,是一个对 dex 文件进行编译优化的程序,在我们的 Android 手机中的位置是 /system/bin/dex2oat,对应的源码路径为 android/art/dex2oat/dex2oat.cc,通…...
济南网站建设求职简历/百度seo收录软件
【log4j:WARN No appenders could be found for logger 解决方案】 【解决】 我们在使用Log4j的时候,总是出现: Java代码log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory). log4j:WARN Please initialize …...
网站商城与网站区别吗/百度知道登录入口
var obj {abc:"ss",nn:90}; var v1 obj.abc;//使用点的方式 var v2 obj["abc"];//使用中括号的方式在实际项目中一般使用点,会方便许多,但是如果key是变量的话就不能使用点了,js会理解变量为对象的key值,造…...
北京建设高端网站的/精准ip地址查询工具
C TCP Server 用C写网络程序需要winsock2.h这个头文件,还有添加一个ws2_32.lib的lib库. VC2005添加Lib库的方法1 项目- Server属性- 配置属性- 连接器- 附加依赖项2 #pragma comment(lib,"ws2_32.lib")3 查找ws2_32.lib文件项目- 添加现有项,将ws2_32.lib作为文件…...
管理网站建设/seo营销网站的设计标准
构造过程是为了使用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个存储型属性设置初始值和为其执行必要的准备和初始化任务。 构造过程是通过定义构造器(Initializers)来实现的,这些构造器可以看做是用来创建…...
最新wordpress知更鸟/站长之家爱站网
前几天有朋友问我,要学习LINUX,网上有很多LINUX操作系统,但是用什么版本的操作系统才好?这个问题我当年学习的时候也遇到过,当时带我的老师教的是red hat5.0专业版,我后来又学习了red hat 6.0,现在最新的是…...
甘肃省兰州市建设厅网站/网络营销策划创意案例点评
一、基本认识 1、JavaScript 定义:javaScript的简写形式就是JS,是由Netscape公司开发的一种脚本语言,一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能(其编写的程序可以被嵌入到HTML或XML页面中&am…...