第4章 运算符与表达式
第4章 运算符与表达式数据定义好之后就要对数据进行运算。本节系统学习 Java 的各类运算符算术、赋值、比较、逻辑、三元等。一、算术运算符运算符说明示例结果加7 310-减7 - 34*乘7 * 321/除7 / 32整数相除取整%取余7 % 31System.out.println(7/3);// 2整数除法直接丢弃小数System.out.println(7.0/3);// 2.3333333333333335有小数参与就是浮点除法System.out.println(7%3);// 17 3*2 1为什么7 / 3是 2因为 int 类型装不下小数Java 规定整数 ÷ 整数结果仍是整数小数部分直接丢弃不是四舍五入3.99 也会变成 3。要保留小数至少让一边变成浮点数。另外整数除以 0 会抛ArithmeticException浮点除以 0 得Infinity注意分母别为 0。// 取余 % 的经典应用判断奇偶、拆数字System.out.println(123%2);// 1奇数System.out.println(123%10);// 3个位数字System.out.println(123/10%10);// 2十位数字自增自减运算符inta10;a;// a 11自增a--;// a 10自减intb10;intcb;// c 10先取值再自增后缀b 变成 11intdb;// d 12先自增再取值前缀b 变成 12口诀前缀 先用后加后缀 先加后用站在使用者的角度看。为什么要有因为i i 1在循环里写得太啰嗦i一行搞定。单独成行时前缀和后缀结果完全一样只有混进表达式里才有区别见扩展知识与易错点。二、赋值运算符是赋值不是数学中的等号intx5;x3;// x x 3 8x-2;// x 8 - 2 6x*4;// x 24x/6;// x 4x%3;// x 1复合赋值运算符、-、*、/、%能让代码更简洁且自带隐式强转// 复合赋值自带隐式强转byte 也能直接做运算byteb10;b5;// 编译通过等价于 b (byte)(b 5)// b b 5; // 编译报错b 5 是 int不能直接赋给 byte三、比较运算符结果永远是布尔值true/false运算符说明示例结果相等5 5true!不等5 ! 5false大于5 3true小于5 3false大于等于5 5true小于等于3 5true// 比较结果可以直接存进 boolean后面给 if 用booleanflag53;// trueSystem.out.println(flag);System.out.println(A65);// trueA 的 Unicode 编号就是 65注意基本类型用比较值String 等引用类型用比较的是地址比较内容要用equals()方法后面字符串章节会重点讲。四、逻辑运算符用于连接多个布尔表达式运算符说明示例短路与两边都为 true 才为 truea 0 b 0||短路或一边为 true 即为 truea 0 || b 0!非取反!true→ falseintage20;booleanisAdultage18;// truebooleancanDriveisAdultage70;// true满足两个条件booleanisKid!isAdult;// false短路特性重要左边为 false 时右边不再执行||左边为 true 时右边不再执行intx10;booleanr(x100)(x0);// 右边不执行x 仍是 10这个特性常用于避免空指针name ! null name.length() 0就是最经典的写法具体实战放到扩展知识里演示。五、三元运算符格式条件 ? 值1 : 值2intscore85;Stringresultscore60?及格:不及格;System.out.println(result);// 及格它是 if-else 的简写但表达式必须有返回值。可以嵌套但超过两层可读性很差不建议。求最大值这类二选一取值用三元最顺手int max a b ? a : b;六、运算符优先级从高到低常用顺序括号()自增自减 --乘除余* / %加减 -比较 相等 !逻辑与逻辑或||赋值 - ...建议不确定优先级时就用括号代码可读性比省几个括号重要得多。intresult(12)*(34)-5/2;// 3 * 7 - 2 19七、字符串拼接遇到字符串时是拼接操作Stringname张三;intage25;System.out.println(姓名name年龄age);// 姓名张三年龄25任何类型与字符串相加都会先转成字符串再拼接。后面字符串章节会讲为什么循环中拼接字符串性能差StringBuilder 的由来。// 任何类型遇到 字符串 都先转成字符串拼接方向从左往右System.out.println(结果是(12));// 结果是3括号里先算加法System.out.println(结果是12);// 结果是12直接拼接八、扩展知识1. 位运算入门 | ^ 面试常考、底层代码常用。注意区分、||是逻辑运算结果只有 true/false、|是位运算直接操作二进制位。运算符名称规则示例按位与两位都是 1 结果才是 16 3 2|按位或有一位是 1 结果就是 16 | 3 7^按位异或两位不同为 1相同为 06 ^ 3 5左移整体左移低位补 06 1 12右移整体右移高位补符号位6 1 3// 移位左移一位 乘 2右移一位 整除 2System.out.println(61);// 12System.out.println(61);// 3// 应用 1 判断奇偶n (n-1) 0 判断 2 的幂System.out.println((71)0?偶数:奇数);// 奇数System.out.println(160(1615)0);// true16 2^42. 短路求值的判空应用短路特性在判空 用值组合里几乎是标配写法// 配合三元做兜底显示配置或输入可能是 nullStringsgetInput();// 假设这个方法可能返回 nullStringshow(s!null!s.isEmpty())?s:空;System.out.println(show);// 空null 被安全兜底3. 自增自减的底层原理一句话概括i是先把 i 的当前值作为表达式结果再自增i是先自增再把新值作为表达式结果。// 后缀拿到的是自增前的值前缀拿到的是自增后的新值inta5;intbaa;// 第一次取 5a 变 6第二次取 6a 变 7 → 5 6 11intx5;intyxx;// 先变 6再变 7 → 6 7 13System.out.println(b y);// 11 13这种先后顺序在 JVM 底层对应专门的字节码指令。记住结论即可别把自增写进复杂表达式单独一行用谁都看得懂。九、易错点1. 整数除法直接取整// ❌ 想要 2.5却得到 2.05/2 先按 int 算出 2doubled15/2;System.out.println(d1);// 2.0// ✅ 至少一边是浮点数或显式强转doubled25/2.0;// 2.5doubled3(double)5/2;// 2.52. % 取余对负数的符号// ❌ 以为 -5 % 2 是 1实际是 -1符号跟随被除数System.out.println(-5%2);// -1System.out.println(5%-2);// 1// ✅ 需要非负余数时先对绝对值取余intrMath.abs(-5)%2;// 13. 用 比较浮点数// ❌ 0.1 0.2 实际是 0.30000000000000004和 0.3 永不相等doublea0.10.2;if(a0.3){// false里面永远不会执行System.out.println(相等);}// ✅ 用差值的绝对值小于一个极小值判断近似相等if(Math.abs(a-0.3)0.000001){System.out.println(近似相等);// 走这里}4. 记不住优先级却不用括号// ❌ 依赖记忆硬写隔几天自己都看不懂intr12*31;// (1 6) 1 3// ✅ 用括号把意图写清楚可读性优先intr2(12*3)1;// 3一眼看懂5. a 与 a 混用// ❌ 前缀后缀混进一个表达式结果全靠猜inti1;intjii;// 1 3 4i 变成 3// ✅ 自增自减单独成行前缀后缀完全等价行为清晰i1;i;i;System.out.println(i);// 3十、小结本系列统一按 JDK 8、JDK 11、JDK 17 三个 LTS 版本讲解。运算符这部分三个版本写法完全一致你用哪个版本练习都一样不用担心差异。整数除法取整、取余%用途广泛判断奇偶、取某位数字比较基本类型的值引用类型比较内容用equals、||有短路特性判空场景很好用三元是简单分支的语法糖嵌套别超过两层优先级记不住就用括号位运算是加分项业务代码别滥用自增自减单独成行使用下一节学习条件控制语句 if / switch。下一篇第5章 条件控制if / switch

相关新闻

2026电赛智能小车开发指南:从硬件选型到算法部署全流程解析

2026电赛智能小车开发指南:从硬件选型到算法部署全流程解析

这次我们来看一个面向2026年电赛的智能小车项目。对于电赛选手和嵌入式开发者来说,提前规划、技术选型和模块化验证至关重要。这个项目不是一个具体的成品,而是一套针对未来电赛(如2026年)小车题目的前瞻性技术框架与实现方案。它…

2026/8/16 4:16:13 阅读更多 →
一个数据分析项目改成 AI 流程后,最难的部分完全变了

一个数据分析项目改成 AI 流程后,最难的部分完全变了

聊《一个数据分析项目改成 AI 流程后,最难的部分完全变了》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要去年我带团队做了一个报表转智能分析的改造,本来以为最难的是接大模型API&…

2026/8/16 4:16:13 阅读更多 →
国产模型代码审查翻车:Cursor 误报率 37% 的秘密测试集

国产模型代码审查翻车:Cursor 误报率 37% 的秘密测试集

国产模型代码审查翻车:Cursor 误报率 37% 的秘密测试集 AI代码审查实战:如何平衡误报率与审查效率 为什么误报率如此重要:一个真实的案例 灰度发布的第3天,我盯着Jenkins上那片刺眼的红色陷入了沉思--团队引入Cursor做自动化代码审查后,PR驳回率从12%飙升到41%,但一半的"…

2026/8/16 4:15:12 阅读更多 →

最新新闻

第二阶段(核心攻坚):死磕 LangGraph + ReAct 架构 + 工具调用,手撕一个带记忆的多工具 Agent

第二阶段(核心攻坚):死磕 LangGraph + ReAct 架构 + 工具调用,手撕一个带记忆的多工具 Agent

1. 为什么「带记忆的多工具 Agent」是面试硬通货 大模型应用开发已经过了“会调 API 就能写简历”的阶段。现在面试官真正想考察的是:你能否让模型在真实任务中自主决策、调用外部工具、并且记住上下文持续工作。这三点分别对应三个核心技术: ReAct 架构…

2026/8/16 5:08:25 阅读更多 →
GEO测试数据怎么存?从 Query、Run、Entity 到 Citation 的数据库建模

GEO测试数据怎么存?从 Query、Run、Entity 到 Citation 的数据库建模

企业开始长期做 GEO(Generative Engine Optimization,生成式引擎优化)测试后,真正棘手的问题往往不是: 怎么再多测几个AI平台? 而是: 测完以后,这些数据到底应该怎么存? …

2026/8/16 5:08:25 阅读更多 →
知漫剧小说转漫剧教程:从原文导入到视频成片

知漫剧小说转漫剧教程:从原文导入到视频成片

写了一堆小说没人看?试试把它变成漫剧视频。知漫剧(zz.jiaxunai.cn)价格实惠,零基础一键生成,平台有全流程教学,角色、声音、场景一致性全搞定,小白也能轻松出片。这篇讲讲怎么把小说原文导入知…

2026/8/16 5:08:25 阅读更多 →
不写代码,用公众号智能回复+ima 做 24h 智能体 !

不写代码,用公众号智能回复+ima 做 24h 智能体 !

很多号主都被私信淹过:“那篇讲 XX 的文章在哪”“手册发我下”“这个怎么落地”。 雇客服不划算,自己回又没时间。 其实微信现在给了两套免费能力,拼起来用,个人号也能有 724 小时“数字分身 资料室”。 一、谁该用这套组合 …

2026/8/16 5:08:25 阅读更多 →
基于微信小程序的摄影作品分享与交流平台毕业设计项目源码

基于微信小程序的摄影作品分享与交流平台毕业设计项目源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/16 5:08:24 阅读更多 →
基于微信小程序的社区图书分享系统的设计与实现毕业设计项目源码

基于微信小程序的社区图书分享系统的设计与实现毕业设计项目源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/16 5:07:24 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →