Java3:Java运算符详解:编程世界的加减乘除
目录写在前面一、运算符是什么二、算术运算符最基础的数学工具2.1 基本四则运算 - * / %2.2 增量运算符 - * / %2.3 自增/自减运算符 --三、关系运算符比较大小的利器四、逻辑运算符条件的组合艺术4.1 逻辑与 4.2 逻辑或 ||4.3 逻辑非 !4.4 短路求值一个聪明的优化五、位运算符深入二进制世界5.1 按位与 5.2 按位或 |5.3 按位取反 ~5.4 按位异或 ^六、移位运算高效的乘除法6.1 左移 6.2 右移 6.3 无符号右移 七、条件运算符简洁的三目运算八、关于优先级的一点忠告总结写在前面在前两篇文章中我们了解了Java的基本数据类型和变量。但光有数据还不够我们还需要一套工具来操作这些数据——这就是运算符。运算符就像是编程世界里的动词告诉计算机要对数据做什么样的操作。今天的文章将系统地梳理Java中的各类运算符并结合实际案例帮助你理解它们的用法和注意事项。学完这一篇你将能写出真正动起来的Java代码。一、运算符是什么简单来说运算符是对操作数进行操作的符号。不同的运算符代表不同的操作含义。int a 10; int b 20; a b; // 是运算符 a b; // 也是运算符Java作为一门功能完备的语言提供了丰富的运算符体系主要包括以下几大类算术运算符关系运算符逻辑运算符位运算符移位运算符条件运算符接下来我们逐一展开。二、算术运算符最基础的数学工具2.1 基本四则运算 - * / %这是我们在数学课上学过的老朋友但在编程中它们有一些特殊规则需要注意。int a 20; int b 10; System.out.println(a b); // 30 System.out.println(a - b); // 10 System.out.println(a * b); // 200 System.out.println(a / b); // 2 System.out.println(a % b); // 0 模运算即取余数几个容易踩坑的地方第一整数除法会向下取整。int a 3; int b 2; System.out.println(a / b); // 输出1而不是1.5这是因为两个整数相除结果仍然是整数小数部分直接被舍弃了。想要得到小数结果可以让其中一个操作数变为浮点数double d a * 1.0 / b; System.out.println(d); // 输出1.5第二除数和模数不能为零。int a 1; int b 0; System.out.println(a / b); // 运行时报错ArithmeticException第三类型不一致时会自动提升。System.out.println(1 0.2); // 输出1.2int被提升为double2.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增量运算符还有一个隐藏优势它会自动完成类型转换不需要手动强转。double d 10.4; int b 10; b d; // 不会报错自动做了类型转换 // b b d; // 这样写反而会报错因为等号右边被提升为double了2.3 自增/自减运算符 --这是Java中使用频率很高的运算符但也是最容易混淆的。int a 1; a; // 后置给a加1此时a2 System.out.println(a); // 先使用a的原始值2再自增所以输出2 System.out.println(a); // 此时a已经是3 a; // 前置给a加1此时a4 System.out.println(a); // 先自增到5再使用所以输出5 System.out.println(a); // 输出5记忆口诀前置先加后用后置先用后加另外要注意只有变量才能使用自增自减常量是不允许的。三、关系运算符比较大小的利器关系运算符共有六个、!、、、、它们的结果都是布尔类型true或false。int a 10; int b 20; System.out.println(a b); // false System.out.println(a ! b); // true System.out.println(a b); // true System.out.println(a b); // false System.out.println(a b); // true System.out.println(a b); // false一个小提醒Java中不能像数学那样连续比较比如3 a 5这种写法是错误的需要用逻辑运算符连接。四、逻辑运算符条件的组合艺术逻辑运算符主要用于组合多个条件判断结果同样是布尔类型。4.1 逻辑与 相当于现实中的且——两个条件都成立结果才为真。表达式1表达式2结果truetruetruetruefalsefalsefalsetruefalsefalsefalsefalseint a 1; int b 2; System.out.println(a 1 b 2); // true System.out.println(a 1 b 100); // false4.2 逻辑或 ||相当于现实中的或——只要有一个条件成立结果就为真。表达式1表达式2结果truetruetruetruefalsetruefalsetruetruefalsefalsefalseSystem.out.println(a 1 || b 2); // true System.out.println(a 100 || b 2); // true System.out.println(a 100 || b 100); // false4.3 逻辑非 !这是一个一元运算符作用是取反——真变假假变真。System.out.println(!(a 1)); // false因为a1是true取反后为false4.4 短路求值一个聪明的优化和||有一个非常重要的特性——短路求值。System.out.println(10 20 10 / 0 0); // 输出false不会抛异常 System.out.println(10 20 || 10 / 0 0); // 输出true不会抛异常按理说10 / 0会抛出异常但上面的代码却能正常运行。原因就在于短路求值对于如果左边为false整个结果已经确定为false右边不再计算对于||如果左边为true整个结果已经确定为true右边不再计算与之对比和|虽然也能做逻辑运算但它们不支持短路求值两边都会计算。五、位运算符深入二进制世界位运算符操作的是数据的二进制位。计算机中所有数据都是以二进制形式存储的理解位运算有助于更深入地理解计算机的工作原理。5.1 按位与 两个二进制位都是1时结果为1否则为0。int a 10; // 二进制1010 int b 20; // 二进制10100 System.out.println(a b);5.2 按位或 |两个二进制位都是0时结果为0否则为1。System.out.println(a | b);5.3 按位取反 ~0变11变0。int a 0xf; // 十六进制相当于二进制1111 System.out.printf(%x\n, ~a);5.4 按位异或 ^两个二进制位相同结果为0不同结果为1。int a 0x1; int b 0x2; System.out.printf(%x\n, a ^ b);一个有趣的性质任何数与自身异或结果都是0。六、移位运算高效的乘除法移位运算操作的是二进制位效率远高于乘除法。6.1 左移 最左侧的位被丢弃最右侧补0。int a 0x10; System.out.printf(%x\n, a 1); // 输出20左移1位相当于乘以2左移N位相当于乘以2的N次方针对正数。6.2 右移 最右侧的位被丢弃最左侧补符号位正数补0负数补1。int a 0x10; System.out.printf(%x\n, a 1); // 输出8右移1位相当于除以2。6.3 无符号右移 最右侧的位被丢弃最左侧补0不考虑符号位。int a 0xffffffff; System.out.printf(%x\n, a 1); // 输出7fffffff七、条件运算符简洁的三目运算条件运算符是Java中唯一的三目运算符格式为表达式1 ? 表达式2 : 表达式3如果表达式1为true取表达式2的值如果表达式1为false取表达式3的值int a 10; int b 20; int max a b ? a : b; // 取较大值 System.out.println(max); // 20使用注意表达式2和表达式3的类型要兼容或者能发生隐式类型转换条件表达式的结果必须被使用不能单独作为一条语句八、关于优先级的一点忠告Java中运算符有优先级之分比如乘除高于加减。但我们不需要死记硬背优先级表格——遇到不确定的情况加括号就行了。// 求a和b的平均值 int a 10; int b 20; // 错误的写法 int c a (b - a) 1; // 因为优先级高于结果不对 // 正确的写法 int c a ((b - a) 1); // 用括号明确顺序括号是程序员最好的朋友它能让代码意图一目了然。总结今天我们一口气学习了Java中的六大类运算符算术运算符 - * / % --关系运算符 ! 逻辑运算符 || !支持短路求值位运算符 | ~ ^移位运算符 条件运算符? :其中算术、关系和逻辑运算符在日常开发中使用频率最高需要熟练掌握位运算和移位运算虽然用得相对少一些但在性能优化和底层开发中很有价值。下一篇文章我们将学习Java中的流程控制语句——if、switch、循环等敬请期待

相关新闻

Kubernetes 资源隔离:AI 任务别和核心服务抢饭碗

Kubernetes 资源隔离:AI 任务别和核心服务抢饭碗

Kubernetes 资源隔离:AI 任务别和核心服务抢饭碗 一、AI 任务很容易吃资源 AI 推理、批处理、向量化、模型评测都会消耗 CPU、内存、GPU 和 IO。如果这些任务和核心在线服务混在同一个资源池里,低优先级任务就可能把在线服务挤慢。Kubernetes 提供很多隔…

2026/7/6 4:10:16 阅读更多 →
湿地生态好不好,不能只看绿不绿

湿地生态好不好,不能只看绿不绿

湿地体检不能只看绿不绿:WEI如何读懂黄河三角洲的生态完整性湿地体检不能只看绿不绿:WEI如何读懂黄河三角洲30年生态变化?一、为什么传统生态指数在湿地里会“看走眼”?1. 只看单一指标,容易把复杂湿地看得太简单2. RS…

2026/7/6 4:08:16 阅读更多 →
什么是.NET Compact Framework

什么是.NET Compact Framework

基于.NET Compact Framework开发的程序,可以叫做托管程序,英文叫做Managed code。所谓Managed code就是使用C#,VB.NET语言来编写代码,使用.NET Compact Framework来开发,编译成平台无关的中间语言(Intermediate Lanuage, IL)的文件…

2026/7/6 4:02:14 阅读更多 →

最新新闻

3个暗黑破坏神2存档编辑难题,如何用免费Web工具完美解决?

3个暗黑破坏神2存档编辑难题,如何用免费Web工具完美解决?

3个暗黑破坏神2存档编辑难题,如何用免费Web工具完美解决? 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾为暗黑破坏神2的存档问题而烦恼?角色进度丢失、装备损坏、或者想尝试新build…

2026/7/6 5:10:31 阅读更多 →
毕设分享 深度学习手写数字识别系统(源码+论文)

毕设分享 深度学习手写数字识别系统(源码+论文)

文章目录 0 前言1 项目运行效果2 深度学习手写字符识别原理2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 最后 0 前言…

2026/7/6 5:08:31 阅读更多 →
GPT-6 vs Claude 5:2026 提示词工程进阶对比

GPT-6 vs Claude 5:2026 提示词工程进阶对比

GPT-6 vs Claude 5:2026 提示词工程进阶对比大模型进入2026年,单纯的“对话”已无法胜任复杂的生产级任务。随着GPT-6和Claude 5相继发布,提示词工程从“艺术”变成了“科学”。面对原生思维链、超长上下文和Agent工作流的革新,开…

2026/7/6 5:06:30 阅读更多 →
从评判者到驾驭者——贾子理论“懂-用“二维框架与认知偏差校正

从评判者到驾驭者——贾子理论“懂-用“二维框架与认知偏差校正

从评判者到驾驭者 ——贾子理论"懂-用"二维框架与认知偏差校正摘要本研究以公理-定理-定律层级理论为研究对象,从科学哲学的本体论与认识论角度,系统探讨了客观规律描述体系的属性定位、人与客观规律之间的正确关系模式,并以贾子理论(Kucius Theory)为典型样本进行实…

2026/7/6 5:04:29 阅读更多 →
Alternative Mod Launcher:告别传统启动器,开启XCOM 2模组管理新时代

Alternative Mod Launcher:告别传统启动器,开启XCOM 2模组管理新时代

Alternative Mod Launcher:告别传统启动器,开启XCOM 2模组管理新时代 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https:/…

2026/7/6 5:00:28 阅读更多 →
Nmap网络扫描实战:从主机发现到渗透测试的完整指南

Nmap网络扫描实战:从主机发现到渗透测试的完整指南

1. 项目概述:为什么你需要掌握 Nmap? 如果你是一名系统管理员、网络安全工程师,或者只是对自家网络里到底有什么设备感到好奇的技术爱好者,那么 Nmap 这个名字你一定不陌生。它被誉为网络扫描领域的“瑞士军刀”,是进行…

2026/7/6 4:56:26 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻