Java 学习打卡 Day2:字面量表达式、全套运算符详解与实战练习
一、今日学习目标
- 理解字面量与表达式之间的关联关系
- 掌握 Java 中运算符完整分类、底层规则与整体优先级
- 吃透算术运算符:除法、求模区别、多位数拆解、类型转换、字符串 / 字符相加底层原理
- 精通自增自减、赋值、关系、逻辑、短路逻辑、三元运算符全部语法与易错点
- 熟记各类运算符使用场景、坑点及编码规范,能独立完成对应案例练习
二、今日学习内容详解
1. 字面量和表达式的联系
- 字面量:程序中直接写出来的固定值,比如整数 10、小数 3.14、字符 'A'、字符串 "java"、布尔值 true/false。
- 表达式:由字面量、变量、运算符组合而成,能算出一个具体结果值的式子。
- 二者联系:字面量是构成表达式的最小基础单元;多个字面量配合运算符拼接,就能组成合法表达式,表达式最终运算结果本质也是一个字面量值。
2. 运算符的种类
Java 常用运算符分为:算术运算符、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、短路逻辑运算符、三元运算符。
3. 算术运算符
1)种类、除法和求模运算的区别与联系及应用场景
- 算术运算符种类:
+ - * / % - 除法
/:做数值相除,整数相除只保留整数部分,舍弃小数。 - 求模
%:取余数,只保留除法运算后剩下的余数。 - 联系:都基于除法运算逻辑;
- 区别:除法拿商,求模拿余数;
- 应用场景:除法:平均分配、求倍数;求模:判断奇偶、判断整除、拆分数字、循环周期控制。
这张截图演示了加减乘除和取模运算,你可以清晰看到:整数除法
8/3结果是2(只取商),取模8%3结果是2(只取余数);同时小数运算8.010 + 1.21出现了浮点精度误差,这也是 Java 中 double 类型的经典特性。
2)n 位整数拆解个位、十位、百位、千位规律
任意多位数,拆分每一位数字有固定通用规律:
- 个位:数字 % 10
- 十位:数字 / 10 % 10
- 百位:数字 / 100 % 10
- 千位:数字 / 1000 % 10规律总结:除以 10 的 n 次方,再对 10 取模,就能拿到第 n 位数字。
这张截图是四位整数拆解的完整案例,输入
7928后,通过上述公式成功拆解出个位8、十位2、百位9、千位7,完美验证了规律。
3)数字相加:两种类型转换规则、特点、取值范围关系
数字相加时,会触发 Java自动类型转换和强制类型转换两种规则:
- 自动类型转换:取值范围小类型 自动转 大类型,安全无丢失;从小到大顺序:byte < short < int < long < float < double
- 强制类型转换:取值范围大类型 转 小类型,需要手动强转,可能丢失精度、数据溢出。运算规则:不同类型数字相加,小类型先自动提升为大类型,再做运算,结果为大类型。
4)字符串相加规则
- 只要
+两边有一边是字符串,+就不再是加法,而是字符串拼接。 - 运算从左往右依次执行,顺序会直接影响最终结果。
截图中第一个语句
"现在是" + 2025 + 1 + "年",因为第一个+就遇到了字符串,后续全部做拼接,结果为现在是20251年;第二个语句2025 + 1 + "年" + "是现在",先算数字加法2025+1=2026,再做拼接,结果为2026年是现在,清晰展示了顺序对结果的影响。
5)字符相加与 ASCII 码
字符参与数学相加时,不会输出字符本身,而是取出字符对应的ASCII 码数值参与运算。例如:'A' 对应 65、'a' 对应 97、'0' 对应 48。字符本质就是一个整形数值,可以和数字直接做算术运算。
截图中
'a' + 2的结果是99,这正是'a'的 ASCII 码97加上2的结果,验证了字符相加的底层原理。
4. 自增自减运算符
- 种类:
++自增、--自减 - 规则:变量在前:
a++、a--先使用变量原值,后自增 / 自减变量在后:++a、--a先自增 / 自减,后使用新值
截图中
++a是先自增为 7,再赋值给 b,所以a=7、b=7;c++是先把原值6赋值给 d,再自增为7,所以c=7、d=6,完美体现了前后置的区别。
5. 赋值运算符
- 种类:
= += -= *= /= %= - 核心注意点:扩展赋值运算符(
+=/-=等)自带隐含强制类型转换,不用手动写强转,底层自动完成类型适配,日常开发更常用。
截图中
a += b等价于a = a + b,即6 + 3 = 9,运行结果也验证了这一点,同时也体现了扩展赋值运算符的简洁写法。
6. 关系运算符
- 种类:
> < >= <= == != - 特点:所有关系运算符运算结果一定是布尔值,只能是
true或false。 - 重点易错点:单个
=是赋值;两个连着==才是判断相等,编码中严禁混淆。
截图中
a == b(6 和 3)结果为false,a == c(6 和 6)结果为true,清晰展示了关系运算符的布尔结果特性。
这张截图是交互式的关系运算案例,输入
10和6后,num1 > num2的结果为true,进一步验证了关系运算符的作用。
7. 逻辑运算符
- 种类:
& | ! ^ - 用处:用来连接多个关系表达式,组合成复杂判断条件,多用于 if、循环等分支逻辑。
8. 短路逻辑运算符
- 种类:
&&短路与、||短路或 - 为什么要用:普通逻辑运算符会全部执行所有条件;短路运算符可以提高执行效率、避免空指针报错。
- 作用:
&&:左边为 false,右边直接不执行;||:左边为 true,右边直接不执行。
截图中
num1 == 5 || num2 == 5 || (num1 + num2) % 5 == 0,当输入5和6时,第一个条件num1 == 5为true,后面的条件就不会再执行,直接返回true,完美体现了||的短路特性。
截图中
a-- < 10 && ++b > 5,当a=6、b=9时,左边a-- < 10为 true,继续执行右边++b > 5,最终返回 true,同时a自减为 5、b自增为 10;如果左边条件为 false,右边的++b将完全不会执行,b的值保持不变,完美体现了&&的短路特性。
9. 三元运算符
- 格式:
条件表达式 ? 表达式1 : 表达式2; - 用处:简化简单的 if-else 双分支判断,一行代码完成二选一赋值。
- 注意事项:三元运算符运算结果必须接收使用,不能只写表达式不定义变量接收,否则无意义且语法不规范。
截图中
num1 < num2 ? 0 : 1,输入6和8时,条件为true,所以返回0,清晰展示了三元运算符的使用方式。
截图中
int min = num1 < num2 ? 0 : 1;,当输入10和3时,10 < 3为false,所以执行:后面的表达式,最终返回1,控制台输出也和代码逻辑完全一致,清晰展示了三元运算符的使用方式。
10. 运算符整体优先级总结
整体优先级复盘:自增自减 > 算术运算 > 关系运算 > 逻辑运算 > 短路运算 > 三元运算 > 赋值运算记不住优先级就用小括号()包裹,可读性更高,也不容易出 bug。
三、今日学习易错点总结
- 整数除法只取商,不取小数;求模只取余数,用途要分清。
- 字符串
+只要一侧是字符串,一律做拼接,和数字加法逻辑完全不同。 - 字符相加底层走 ASCII 码,不是输出字符本身。
- 自增自减前后位置不同,执行顺序完全不一样,做题和编码极易踩坑。
=是赋值,==是判断相等,绝对不能写混。- 短路 &&、|| 具备短路特性,能提升效率还能规避异常,开发优先用短路逻辑。
- 三元运算符必须接收结果,不能单独悬空写表达式。
- 不同类型数字运算遵循自动类型转换规则,小转大自动升,大转小要强转。
四、今日学习感悟
今天系统学完了 Java 全部常用运算符,从基础字面量表达式关联,到算术、自增自减、赋值、关系、逻辑、短路、三元运算符逐一吃透。不仅掌握了语法格式,还搞懂了底层原理、运算规则、取值类型转换和各类应用场景,同时整理了高频易错点。运算符是 Java 编码的基础核心,后续分支、循环、业务逻辑都离不开这些知识点,必须记牢练熟。
更多推荐












所有评论(0)