从初学者到专家:Java运算符的完整指南

news2025/4/28 12:22:28

目录

1.算数运算符

2.增量运算符 

2.1自增/自减运算符

4. 逻辑运算符

5.位运算符

6.移位运算符  

 7. 条件运算符



导言:
Java作为一门广泛使用的编程语言,其运算符是编写代码时必不可少的一部分。本篇博客将为你详细介绍Java中的各种运算符,从基础的算术运算符到高级的位运算符和三元运算符,为你打开运算符的奥秘之门。我们将通过代码示例和简单例子来帮助你更好地理解和应用这些运算符。

1.算数运算符

基本四则运算符:算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法、取模等。下面是一些常见的算术运算符及其用法:
int a = 10;
int b = 5;

int sum = a + b;        // 加法运算
int difference = a - b; // 减法运算
int product = a * b;    // 乘法运算
int quotient = a / b;   // 除法运算
int remainder = a % b;  // 取余运算

注意事项:

1.都是二元运算符,使用时必须要有左右两个操作数

int a = 10;
int b = 5;

int sum = a + b;        // 加法运算
int difference = a - b; // 减法运算
int product = a * b;    // 乘法运算
int quotient = a / b;   // 除法运算
int remainder = a % b;  // 取余运算

2.int / int 结果还是int类型,而且会向下取整

inta=3;
intb=2;
//在数学中应该是1.5但是在Java中输出结果为1会向下取整,即小数点之后全部舍弃掉了System.out.println(a/b);

//如果要得到数学中的结果,可以使用如下方式
doubled=a*1.0/b;   //只要相乘数有一位数字是小数,结果就为小数
System.out.println(d);

3.做除法和取模时,右操作数不能为0

int a = 1;
int b = 0;
System.out.println(a / b)
// 运行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:5)

4.% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的

System.out.println(11.5 % 2.0);
// 运行结果
1.5

5.两侧操作数类型不一致时,向类型大的提升

System.out.println(1+0.2);
//+的左侧是int,右侧是double,在加之前int被提升为double型
//故输出1.2

2.增量运算符 

该种类型运算符操作完成后,会将 操纵的结果赋值给左操作数。
具体示例如下:
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3

a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2

a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6

a /= 3; // 相当于 a = a / 3

System.out.println(a); // 输出2

a %= 3; // 相当于 a = a % 2
System.out.println(a); // 输出2

注意:只有变量才能使用该运算符,常量不能使用。

2.1自增/自减运算符

递增运算符有两种形式:前缀递增和后缀递增。 前缀递增运算符(++x) 将先将变量的值增加1,然后返回增加后的值。 后缀递增运算符(x++) 将返回变量的原始值,然后再将其增加1。递减运算符也有类似的前缀和后缀形式。
具体例子如下:
int x = 5;

// 前缀递增
int y = ++x;
// y的值为6,x的值也为6

// 后缀递增
int z = x++;
// z的值为6,x的值变为7

// 前缀递减
int a = --x;
// a的值为6,x的值变为6

// 后缀递减
int b = x--;
// b的值为6,x的值变为5

增量运算符在编程中常用于循环、条件语句和其他需要对变量进行递增或递减的场景。它们提供了一种简洁和方便的方式来更新变量的值。

3. 关系运算符

关系运算符用于比较两个值之间的关系,并返回一个布尔值(true或false)。下面是一些常见的关系运算符及其用法:

int a = 10;
int b = 5;

boolean isEqual = a == b;      // 相等运算
boolean isNotEqual = a != b;   // 不相等运算
boolean isGreater = a > b;     // 大于运算
boolean isLess = a < b;        // 小于运算
boolean isGreaterOrEqual = a >= b; // 大于等于运算
boolean isLessOrEqual = a <= b;    // 小于等于运算

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

4. 逻辑运算符

当需要在条件语句或布尔表达式中进行逻辑判断时,通过逻辑运算符来操作布尔值(true或false)。

1.逻辑与运算符(&&)
逻辑与运算符表示两个条件都必须为true时,整个表达式才为true。如果任意一个条件为false,则整个表达式为false。

boolean a = true;
boolean b = false;
boolean result = a && b;  // 结果为false,因为b为false

逻辑或运算符(||)
逻辑或运算符表示两个条件中至少一个为true时,整个表达式就为true。只有两个条件都为false时,整个表达式才为false。

boolean a = true;
boolean b = false;
boolean result = a || b;  // 结果为true,因为a为true

逻辑非运算符(!)
逻辑非运算符用于取反操作,将true变为false,将false变为true。

boolean a = true;
boolean result = !a;  // 结果为false,因为a为true

短路求值

逻辑与运算符(&&)和逻辑或运算符(||)都具有短路求值的特性。短路求值指的是当根据第一个条件的结果可以确定整个表达式的结果时,将不再计算第二个条件。

注意两点:

  1. 对于逻辑与运算符(&&),如果第一个条件为false,则整个表达式一定为false,不会执行第二个条件的计算。
  2. 对于逻辑或运算符(||),如果第一个条件为true,则整个表达式一定为true,不会执行第二个条件的计算。

boolean a = true;
boolean b = false;
boolean result = a || (b && someOtherCondition);  // 如果a为true,则整个表达式为true,不会计算第二个条件

作用:短路求值可以提高程序的性能,并且在某些情况下避免不必要的计算。逻辑运算符在控制流语句、条件语句和布尔表达式中起着重要的作用。它们允许我们进行复杂的逻辑判断和条件组合,从而控制程序的行为。了解逻辑运算符的含义和用法对于编写正确和可读性强的代码至关重要。

5.位运算符

按位与 &: 如果两个二进制对应位都是 1, 则结果为 1, 否则结果为 0 。

12 & 5

12:  00001100
5:   00000101
-------------
     00000100
结果: 00000100 (4)

按位或(|): 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

12 | 5

12:  00001100
5:   00000101
--------------
     00001101
结果: 00001101 (13)

注意 :
当 & | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表 示逻辑运算.

按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0
~12

12:  00001100
------------
结果: 11110011 (-13)

注意事项:

1. 0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进制位。
2. 0xf 表示 10 进制的 15, 也就是二进制的 1111。
3.printf 能够格式化输出内容, %x 表示按照十六进制输出
4.\n 表示换行符

 按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

12 ^ 5

12:  00001100
5:   00000101
--------------
     00001001
结果: 00001001 (9)

注意:如果两个数相同,则异或的结果为0 


6.移位运算符  

移位运算符有三个 : << , >>, >>> ,都是二元运算符,且都是按照二进制比特位来运算的。

 1. 左移 <<: 最左侧位不要了, 最右侧补 0.

12 << 2

12:  00001100
------------
结果: 00110000 (48)

2. 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0,负数补1) 

12 >> 2

12:  00001100
------------
结果: 00000011 (3)

3.无符号右移 >>>: 最右侧位不要了, 最左侧补 0.  

-12 >>> 2

-12:  11110011
------------
结果: 00111100 (60)
注意:
1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
4. 移动负数位或者移位位数过大都没有意义.

 7. 条件运算符

条件运算符只有一个 : 三目运算符

结构为:条件 ? 结果1 : 结果2

如果条件为true,那么整个表达式的结果就是结果1;如果条件为false,则结果就是结果2。

可以将条件运算符理解为一个问答游戏。条件是一个问题,如果回答为true,我们就选择结果1作为答案;如果回答为false,我们就选择结果2作为答案。

这是一个具体的例子:
 

int age = 20;
String message = (age >= 18) ? "成年人" : "未成年人";

在上面的例子中,我们根据年龄的条件判断选择不同的信息。如果年龄大于或等于18岁,我们选择"成年人"作为信息;否则,我们选择"未成年人"作为信息。

好的,内容就到这里,如果以上有错误的地方恳请在评论区指出,如果我帮助到你,希望你也可以三连支持一下,谢谢。堆糖同学会很赞同的。

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

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

相关文章

【AndV】ant-design-vue中select使用mode=“combobox“无效:

文章目录 一、问题:二、解决: 一、问题: Warning: [antdv: Select] The combobox mode of Select is deprecated,it will be removed in next major version,please use AutoComplete instead 二、解决: 将mode"combobox"改为mode"SECRET_COMBOBOX_MODE_DO_NOT_…

Docker启动一个Centos镜像

搜索可用的centos的docker镜像 docker search <image>&#xff1a;在docker index中搜索imagedocker search centos 下载centos镜像&#xff08;拉取镜像&#xff09; docker pull centos:latest查看镜像docker images&#xff1a;列出imagesdocker images -a&#xff…

Paddle OCR V4 测试Demo

效果 项目 VS2022.net4.8OCRV4 代码 using OpenCvSharp; using Sdcb.PaddleInference; using Sdcb.PaddleOCR; using Sdcb.PaddleOCR.Models; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; usin…

java连接sqlserver细节处理

这个文章记录一下java连接sqlserver细节处理 &#xff0c;有其他的细节可以评论。 首先是 驱动 driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriverpom文件 将mysql的改成这个 <!-- 数据库驱动 --><dependency><groupId>com.microsoft.sqlserve…

iOS字体像素与磅的对应关系

注意&#xff1a;低于iOS10的系统&#xff0c;显示的字宽和字高比高于iOS10的系统小。 这就是iOS10系统发布时&#xff0c;很多app显示的内容后面出现…&#xff0c;因而出现很多app为了适配iOS10系统而重新发布新版本。 用PS设计的iOS效果图中&#xff0c;字体是以像素&#x…

2023年大数据与计算国际会议 (WBDC 2023)| EI、Scoups检索

会议简介 Brief Introduction 2023年大数据与计算国际会议&#xff08;WBDC 2023&#xff09; 会议时间&#xff1a;2023年11月17 -19日 召开地点&#xff1a;中国西安 大会官网&#xff1a;www.iwbdc.org 2023年大数据与计算国际会议&#xff08;WBDC 2023&#xff09;将围绕“…

PostgreSQL中根据时间段范围查询数据,如19:29:10到20:29:10范围内的数据,排除年月日

数据格式如下 问题描述 我的SQL语句条件是 WHERE (TO_CHAR(cti.binder_gen_time, YYYY-MM-DD HH:mm:ss) > 19:29:10 AND TO_CHAR(cti.binder_gen_time, YYYY-MM-DD HH:mm:ss) < 20:29:10)为什么我数据的时间是2023-07-20 17:58:29也能被查出来&#xff1f; 问题解决…

Centos7.9系统_亲测成功_磁盘满了_分区和挂载新盘_创建文件夹并挂载分区---Linux工作笔记057

由于在某些部署环境下,运维管理员,仅仅是给分配一些硬盘容量,但是并没有进行分区和挂载到对应的合适的目录下,因此这个时候就需要我们自己去处理了. 这个是自己亲测成功的:由于是后面记录的,尽量记录详细 free -h 查看一下内存情况 df -h查看 硬盘的使用情况,还有是否有没挂载…

Drools用户手册翻译——第四章 Drools规则引擎(十五)复杂事件处理(CEP)查询、事件监听、调试日志和性能调优

甩锅声明&#xff1a;本人英语一般&#xff0c;翻译只是为了做个笔记&#xff0c;所以有翻译错误的地方&#xff0c;错就错了&#xff0c;如果你想给我纠正&#xff0c;就给我留言&#xff0c;我会改过来&#xff0c;如果懒得理我&#xff0c;就直接划过即可。 Drools查询和实时…

瑞数信息《2023 API安全趋势报告》重磅发布: API攻击持续走高,Bots武器更聪明

如今API作为连接服务和传输数据的重要通道&#xff0c;已成为数字时代的新型基础设施&#xff0c;但随之而来的安全问题也日益凸显。为了让各个行业更好地应对API安全威胁挑战&#xff0c;瑞数信息作为国内首批具备“云原生API安全能力”认证的专业厂商&#xff0c;近年来持续输…

pve7.2虚拟机 lvm磁盘扩容,增加硬盘操作

之前安装pve时候只有256的ssd,最近安装的虚拟机较多&#xff0c;给加块闲置硬盘&#xff0c;顺便学习一下&#xff0c;像pve这种虚拟机系统&#xff0c;硬盘应该可以像nas你这样随时增加&#xff0c;而不影响上层应用&#xff0c;我自己也是摸索着做。 一、安装好硬盘后打开pv…

对于企业:数字化的趋势不可阻挡.以无代码开发实现敏捷交付

在科技日新月异的今天&#xff0c;我们正处在一个由数据驱动的时代。为了在这个时代中占据一席之地&#xff0c;我们需要不断探索新的开发模式&#xff0c;以适应不断变化的市场需求。其中&#xff0c;无代码开发模式正逐渐成为引领未来科技的关键。 一、什么是无代码开发 无代…

2023年市面上最受欢迎的工程项目管理软件推荐

随着科技的发展和工程项目的复杂性增加&#xff0c;工程项目管理软件成为了现代项目管理中不可或缺的工具。这些软件可以帮助团队更好地协调、组织和执行工程项目&#xff0c;并提高项目的效率和成功率。本文结合了不同的产品测评网站&#xff0c;总结了以下四款备受好评的工程…

LabVIEW控制通用工作台

LabVIEW控制通用工作台 用于教育目的的计算机化实验室显着增长&#xff0c;特别是用于运动控制的实验室。它们代表了各种工业应用中不断扩大的领域&#xff0c;并成为以安全的方式使用通常昂贵或独特的实验室设备进行实时实验的宝贵工具。NI LabVIEW等软件应用程序的开发和不断…

甘特图:项目管理软件的应用,让项目团队提高工作效率

项目管理软件可以帮助项目团队更有效地分配资源、监控进度、降低风险&#xff0c;提高工作效率。 通过利用项目管理软件的强大功能&#xff0c;团队可以更好地应对项目中的各种挑战&#xff0c;确保项目按计划推进并实现项目目标。 任务分解&#xff1a;通过项目管理软件进…

uni-app项目运行在安卓真机调试

uni-app项目运行在安卓真机调试 手机开启开发者模式 在系统设置——关于手机——连续点击系统版本号5-7次&#xff0c;直到提示“您已处于开发者模式”。具体如下图&#xff1a; 手机开启USB调试 在系统和更新——开发人员选项——打开USB调试。具体如下图所示&#xff1a…

【HCIP】重发布实验2

题目 拓扑图 配置&#xff1a; R1 //ip配置 [r1]int l0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [r1-GigabitEthernet0/0/0]int g0/0/1 [r1-GigabitEthernet0/0/1]ip add 14.1.1.1 24 //配置RIP和OSPF并且实现…

学习笔记|printf函数的实现|不同操作系统中的换行|数的进制:2进制、10进制、16进制转换|STC32G单片机视频开发教程(冲哥)|第五集:C语言基础

文章目录 1.C语言 printf函数的实现Tips&#xff1a;ASCII码表Tips&#xff1a;找不到头文件怎么办&#xff1f;主函数添加程序:常规用法:Tips&#xff1a;不同操作系统中的换行 ⒉数的进制:2进制、10进制、16进制.常见的对应&#xff1a; 1.C语言 printf函数的实现 printf 是…

创新零售,京东重新答题?

继新一轮组织架构调整后&#xff0c;京东从低价到下沉动作不断。 新成立的创新零售部在京东老将闫小兵的带领下悄然完成了整合。近日&#xff0c;京喜拼拼已改名为京东拼拼&#xff0c;与七鲜、前置仓等业务共同承载起京东线上线下加速融合的梦想。 同时&#xff0c;拼拼的更…

自定义element-plus的弹框样式

项目中弹框使用频繁,需要统一样式风格,此组件可以自定义弹框的头部样式和内容 一、文件结构如下: 二、自定义myDialog组件 需求&#xff1a; 1.自定义弹框头部背景样式和文字 2.自定义弹框内容 3.基本业务流程框架 components/myDialog/index.vue完整代码&#xff1a; &…