Java的运算操作

news/2024/4/20 19:34:04/文章来源:https://blog.csdn.net/m0_74352571/article/details/129243048

个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【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运算符的一些操作,就到这里吧。
再见啦!!!
在这里插入图片描述

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

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

相关文章

华为OD机试题,用 Java 解【考古学家】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

VB6遍历目录(文件夹和文件)

日期&#xff1a;2023年2月27日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

产业链金融对接央行征信过程

2018年10月底&#xff0c;央行二代征信系统上线试运行。2018年10月至2019年4月&#xff0c;央行二代征信系统 进行试运行&#xff0c;全国16家试点机构参与全业务试运行&#xff0c;14家机构进行查询试点。2019年6月&#xff0c;央行二 代征信系统正式上线。2019年6月至2020年1…

计算机信息系统安全服务等级证

计算机信息系统安全服务等级评定是规范行业服务、提升企业诚信度、保证工程质量、市场准入控制的重要保证&#xff0c;是安全服务机构从事信息网络安全服务能力的等级证明&#xff0c;为我省信息化建设使用单位在选择网络安全服务机构时提供参考依据。 等级划分 安全服务机构等…

Java中常用的七种队列你了解多少?

文章目录Java中常用的七种队列你了解多少?ArrayBlockingQueue队列如何使用&#xff1f;添加元素到队列获取队列中的元素遍历队列LinkedBlockingQueue队列如何使用&#xff1f;1. 创建SynchronousQueue对象2. 添加元素到队列3. 获取队列中的元素4. 遍历队列SynchronousQueue队列…

我要测网2022优秀检测机构评选活动举办,径硕科技分享数字营销趋势

2023年2月17号&#xff0c;由我要测网主办的「数字营销韧性增长&#xff5c;2023TIC营销人开年报告」圆满举办。来自南京市产品质量监督检验院、中国检科院测试评价中心、径硕科技JINGdigital等企业的3位“重量级”嘉宾进行了精彩纷呈的分享&#xff0c;为在低谷中前行的检测机…

我嘞个神——原来创建应用根本不需要会编码(看我10分钟应用上线)

目录 一、前言 二、官网功能查询与环境初始化 YonBuilder应用开发 三、测试过程 3.1、创建应用 3.2、数据建模 3.3、页面建模 3.4、页面发布 四、时间累计 五、效率评价 六、总结 一、前言 这里我用到了用友的平台&#xff0c;很多学生们刚毕业都在从事运维和实施的…

Java基础:常见API(Math,System,Runtime,Object,BigInteger,BigDecima)

1.常见API 1.1 Math类 向上取整是向着数轴右边走的意思, 负数也是. 也可以叫进一法, 不论正数负数都会往右走一. 向下取整是向着数轴左边走. 也可以叫去尾法, 不论正负数都会将小数点后的数字去掉. 1.1.2 练习 // 判断有多少水仙花数int count 0;for (int i 100; i < 1…

如何在没有任何额外包的情况下使用 NodeJS 下载文件

如何在没有任何额外包的情况下使用 NodeJS 下载文件 您可以下载文件&#xff08;图像、文本或任何类型的文件&#xff09;并使用 NodeJS 内置 https和 fs模块将其保存到您的文件系统。 该 https模块允许您使用 NodeJS 创建 HTTPS 请求&#xff0c;同时该 fs模块授予您访问文件…

【论文精读11】MVSNet系列(2018-2022)总结

MVSNet系列总结1.MVSNet ECCV20182.RMVSNet CVPR20193.P-MVSNet ICCV20194.MVSCRF ICCV20195.PointMVSNet ICCV20192019年的这四篇文章各有特点&#xff0c;其中RMVSNet、PointMVSNet更是打开了可以继续沿着往下做的思路&#xff1a;6.cascade MVSNet CVPR20207.UCSNet CVPR202…

Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

Python基础—while循环

(1)while循环&#xff1a; 语法格式&#xff1a; while 条件&#xff1a;   执行语句1……   执行语句2…… 适用条件&#xff1a;无限循环 死循环 while True:print(条件是真的&#xff01;)代码实例&#xff1a; i 0 # 创建一个计数的变量 while i < 5: # Truepr…

一个容易被忽视的标签 —— iframe

前言 甲问&#xff1a;说说你知道的HTML标签。 乙于是说了一大堆标签&#xff0c;比如div&#xff0c;span等等。 甲说&#xff1a;那你知道 iframe 标签吗&#xff1f; 乙这时候迟疑了片刻&#xff0c;缓缓说出&#xff1a;知道它&#xff0c;但是不太了解这个标签。 HTM…

Linux文件属性--软连接和硬链接

文章目录软链接硬链接软链接和硬链接的区别软链接 软链接&#xff08;Soft Link&#xff09;又叫符号链接&#xff08;Symbolic Link &#xff09;&#xff0c;是linux特殊文件的一种&#xff0c;文件类型为l,它的数据是它所链接的文件或目录的路径。软链接可以跨磁盘和 分区…

动手学深度学习(第二版)学习笔记 第三章

第三章 线性神经网络 代码&#xff1a;d2l-zh/pytorch/chapter_linear-networks 3.1 线性回归 3.1. 线性回归 — 动手学深度学习 2.0.0 documentation 解析解 线性回归的解可以用一个公式简单地表达出来&#xff0c;这类解叫作解析解&#xff08;analytical solution&…

git在工作中的正常使用

开发A和B功能后进行发版。。 一、拉取代码 git clone http://ntc.ntsvars.com:8090/lvweijie/test.git二、开发功能A任务 创建A任务本地分支 #创建A分支&#xff0c;并切换A分支 git checkout -b A三、开发A任务 四、提交A功能文件到本地分支 git add .五、添加提交A功能备…

AcWing3485. 最大异或和

先看题目&#xff1a; 说实话&#xff0c;我看到这道题就想用滑动窗口&#xff0c;但是滑了一下发现不太对啊&#xff0c;如果我用滑动窗口的话&#xff0c;那么最后肯定是一个固定长度为m的窗口在持续计算&#xff0c;区间长度小于m的区间的异或和肯定会被遗漏。然后我就想怎么…

FSP:Flow of Solution Procedure (CVPR 2017) 原理与代码解析

paper&#xff1a;A Gift From Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learningcode&#xff1a;https://github.com/HobbitLong/RepDistiller/blob/master/distiller_zoo/FSP.py背景深度神经网络DNN逐层生成特征。更高层的特征更接近…

决策树在sklearn中的实现

目录 一.模块sklearn.tree 二.建模基本流程 三.DecisionTreeClassifier重要参数 1.criterion 2.random_state & splitter 3.剪枝参数max_depth 4.剪枝参数min_samples_leaf & min_samples_split 5.max_features & min_impurity_decrease 6.class_weight …

Python IDE:对于 Python 初学者来说,最好的 IDE 是什么?

Python 是科技界最简单、使用最广泛的编程语言之一。它是一种高级通用编程语言&#xff0c;强调代码可读性并使用面向对象的方法。Python可以用来完成很多任务&#xff0c;包括网站开发、软件开发、 自动化 和数据分析 专业开发人员使用Python开发各种流行的软件程序&#xff0…