Java 运算符超详细整理,从入门到精通
运算符是用来对变量、字面量进行运算操作的符号是 Java 语法体系中不可或缺的一部分。本文将全面讲解算数运算符、字符串拼接、自增自减运算符、类型转换、赋值运算符、关系运算符、逻辑运算符、三元运算符、运算符优先级几大知识点搭配语法讲解、代码案例、实战练习与易错点分析零基础也能快速掌握适合日常学习、代码练习与面试复习。一、算数运算符1.1 运算符介绍算数运算符主要用于完成数学加减乘除运算是最基础的运算符具体规则如下符号作用说明加常规数学加法运算-减常规数学减法运算*乘等价于数学中的乘号×/除等价于数学中的除号÷取除法运算的商%取余获取两个数据做除法后的余数1.2 核心注意事项两个整数相除结果仍然是整数只会保留商直接舍弃小数部分如果想要得到小数结果运算过程中必须有浮点数参与/和%区分/取商%取余数。1.3 实战案例数值拆分需求将整数123拆分出个位、十位、百位并打印输出。拆分公式个位数值% 10十位数值/ 10 % 10百位数值/ 10 / 10 % 10千位数值/ 10 / 10 / 10 % 10代码实现public class ArithmeticDemo { public static void main(String[] args) { int num 123; // 计算个位 int ge num % 10; // 计算十位 int shi num / 10 % 10; // 计算百位 int bai num / 10 / 10 % 10; System.out.println(整数123的个位为: ge); System.out.println(整数123的十位为: shi); System.out.println(整数123的百位为: bai); } }运行结果整数123的个位为:3 整数123的十位为:2 整数123的百位为:11.4 小结整数相除无法直接得到小数必须加入浮点数参与运算多位数拆分可按照「连续整除 取余」的通用公式实现。二、字符串拼接2.1 规则说明当运算符两侧任意一边出现字符串时不再是加法运算符而是字符串连接符作用是将前后内容拼接为一个完整字符串。2.2 代码示例public class StringJoinDemo { public static void main(String[] args) { // 纯数字加法运算 System.out.println(1 23); // 包含字符串拼接操作 System.out.println(年龄为: 23); // 从左至右依次运算先算199再和字符串拼接 System.out.println(1 99 年黑马); // 先拼接字符串后续数字全部参与拼接 System.out.println(年龄为: 23 1); // 括号提升运算优先级先计算括号内加法再拼接 System.out.println(年龄为: (23 1)); } }运行结果24 年龄为:23 100年黑马 年龄为:231 年龄为:242.3 小结表达式中一旦出现字符串就执行字符串拼接逻辑可通过()改变运算顺序优先完成数学计算。三、自增自减运算符3.1 运算符介绍符号作用说明自增变量自身数值加 1--自减变量自身数值减 1和--可以写在变量前面或者变量后面使用规则分两种场景。3.2 使用规则单独使用、--放在变量前、后效果完全一致都是变量自增 / 自减。参与运算、打印、赋值等混合使用变量先操作后自增变量先自增后操作硬性要求、--只能操作变量不能直接作用于字面量。3.3 小结自增自减核心区分点在于是否参与其他运算单独使用位置无区别混合使用严格遵循「前先变后后变」规则。四、数据类型转换Java 中不同数据类型之间运算、赋值时会自动触发类型转换分为隐式转换自动转换和强制转换两类。4.1 隐式转换自动转换4.1.1 基础规则将取值范围小的数值 / 变量赋值给取值范围大的变量程序自动完成转换无需手动编写代码。数据类型范围从小到大顺序byte→short→int→long→float→doublechar类型也会参与隐式转换。4.1.2 运算中的隐式转换不同范围数据运算时范围小的类型会自动提升为范围大的类型再进行计算最终结果为大范围类型。特殊规则byte、short、char三者互相运算时会统一先提升为 int 类型再参与计算。4.1.3 代码示例public class AutoConvertDemo { public static void main(String[] args) { // 基础隐式转换int 转 double int a 10; double b a; System.out.println(b); // 不同类型运算int 提升为 double int num1 10; double num2 12.3; double res1 num1 num2; System.out.println(res1); // byte 运算自动提升为 int byte c1 10; byte c2 20; int res2 c1 c2; System.out.println(res2); // char 提升为 int依据ASCII编码 int x 1; char y a; int res3 x y; System.out.println(res3); } }4.2 强制类型转换显式转换4.2.1 基础规则将取值范围大的数值 / 变量赋值给取值范围小的变量无法自动转换必须手动强制转换。语法格式目标数据类型 变量名 (目标数据类型) 待转换数据;4.2.2 风险提示强制类型转换可能造成精度丢失、数值溢出使用时需要谨慎。4.2.3 代码示例public class ForceConvertDemo { public static void main(String[] args) { double d 12.3; // double 强制转为 int舍弃小数部分 int num (int) d; System.out.println(num); } }4.3 小结隐式转换小范围 → 大范围自动执行运算时小类型统一提升为大类型。byte、short、char运算一律提升为int。强制转换大范围 → 小范围手动书写语法存在数据丢失风险。五、赋值运算符5.1 运算符分类与说明分为基础赋值运算符和扩展赋值运算符符号名称作用说明基础赋值a10将右侧数值 10 赋值给左侧变量 a加后赋值a b等价于a a b-减后赋值a - b等价于a a - b*乘后赋值a * b等价于a a * b/除后赋值a / b等价于a a / b%取余后赋值a % b等价于a a % b5.2 重要特性扩展赋值运算符底层隐含强制类型转换无需手动添加强转语法。5.3 小结是最基础的赋值符号、-等扩展运算符简化代码写法且自带强制转换效果开发中使用频率很高。六、关系运算符6.1 运算符说明关系运算符用于判断两个数据的大小、相等关系运算结果一定是 boolean 类型true /false。符号说明判断两个值是否相等相等为 true否则为 false!判断两个值是否不相等不相等为 true否则为 false判断左侧值是否大于右侧值判断左侧值是否大于等于右侧值判断左侧值是否小于右侧值判断左侧值是否小于等于右侧值6.2 易错提醒切勿将判断相等的和赋值符号混淆二者语法、作用完全不同。6.3 小结关系运算符多用于条件判断结果只有true和false两种重点区分与。七、逻辑运算符逻辑运算符用于连接多个布尔表达式、布尔值实现多条件组合判断最终结果仍为boolean类型。7.1 基础逻辑运算符符号名称运算规则逻辑与所有条件都为 true结果才为 true遇 false 则整体为 false逻辑或任意一个条件为 true结果就为 true遇 true 则整体为 true!逻辑非取反true 变 falsefalse 变 true^逻辑异或两边结果不同为 true相同为 false7.2 短路逻辑运算符短路与、短路或是开发中最常用的运算符具备短路特性符号名称规则短路与和逻辑一致若左侧为 false右侧代码不再执行短路短路或和 逻辑一致若左侧为 true右侧代码不再执行短路7.3 小结普通、|无论左侧结果如何右侧表达式都会执行短路、||具备短路效果执行效率更高实际开发中优先使用、||、!。八、三元运算符8.1 语法格式判断条件 ? 值1 : 值2;8.2 执行流程先计算布尔类型的判断条件如果条件结果为true最终运算结果取值 1如果条件结果为false最终运算结果取值 2。8.3 作用总结根据条件二选一简化简单的分支判断代码是精简版的条件语句。九、运算符优先级9.1 优先级规则Java 运算符存在默认执行优先级优先级高的运算符会优先运算日常开发中不需要死记硬背优先级可以使用小括号()手动改变运算顺序让代码逻辑更清晰。9.2 代码示例public class PriorityDemo { public static void main(String[] args) { int a 10; int b 20; // 默认优先级 优先级高于 || System.out.println(a b || a b a b); // 括号提升整体优先级 System.out.println((a b || a b) a b); } }9.3 小结复杂运算建议使用()划分运算顺序降低代码阅读和出错概率。十、全文总结算数运算符完成数学运算整数相除取商不取小数%专门用于取余字符串拼接遇到字符串变为连接符从左至右依次执行自增自减单独使用无区别混合使用遵循「前先变、后后变」类型转换小范围转大范围自动转换大范围转小范围必须强制转换存在精度丢失风险赋值运算符扩展赋值运算符自带强制转换简化代码编写关系运算符结果为布尔值注意区分和逻辑运算符优先使用短路、||执行效率更高三元运算符简单条件二选一精简分支代码运算符优先级复杂运算建议使用()手动指定顺序。运算符是 Java 逻辑代码的基础后续分支、循环、集合等知识点都会大量用到建议多编写案例练习熟练掌握各类运算符的规则与易错点。