2026/4/18 14:27:37
网站建设
项目流程
许昌做网站公司报价,网站建设与推广是什么意思,晋中推广型网站开发,开发一个安卓app多少钱比较运算符是 Java 中用于判断 “两个值 / 变量关系” 的核心运算符#xff0c;也是实现程序逻辑判断#xff08;如 if/else#xff09;的基础。新手常混淆 “等于” 和 “赋值”、“等于” 和 “对象相等”#xff0c;这篇笔记结合可直接运行的代码案例#xff0c;从基础…比较运算符是 Java 中用于判断 “两个值 / 变量关系” 的核心运算符也是实现程序逻辑判断如 if/else的基础。新手常混淆 “等于” 和 “赋值”、“等于” 和 “对象相等”这篇笔记结合可直接运行的代码案例从基础用法到避坑指南帮你彻底掌握 Java 比较运算符。一、什么是 Java 比较运算符比较运算符也叫 “关系运算符”用于比较两个操作数的大小、是否相等运算结果永远是布尔类型true/false—— 满足条件返回 true不满足返回 false。根据功能可分为两类相等性判断等于、!不等于大小关系判断大于、小于、大于等于、小于等于二、比较运算符的完整用法附可运行案例1. 核心语法与对照表运算符名称语法结果适用场景等于a btrue/false所有基本类型 引用类型!不等于a ! btrue/false所有基本类型 引用类型大于a btrue/false数值类型byte/short/int 等小于a btrue/false数值类型大于等于a btrue/false数值类型小于等于a btrue/false数值类型2. 基础数值比较可直接运行// 文件名BasicCompareDemo.java类名与文件名一致 public class BasicCompareDemo { public static void main(String[] args) { // 初始化测试变量 int a 10; int b 20; double c 10.0; // 1. 相等性判断 System.out.println(a b (a b)); // 输出false10≠20 System.out.println(a c (a c)); // 输出true10和10.0数值相等 System.out.println(a ! b (a ! b)); // 输出true10≠20 // 2. 大小关系判断 System.out.println(a b (a b)); // 输出false System.out.println(a b (a b)); // 输出true System.out.println(b a (b a)); // 输出true System.out.println(a c (a c)); // 输出true // 3. 实际应用结合if判断 int score 85; if (score 60) { System.out.println(考试及格); // 输出考试及格 } else { System.out.println(考试不及格); } } }3. 运行步骤与结果新建BasicCompareDemo.java文件粘贴上述代码命令行执行编译javac BasicCompareDemo.java执行运行java BasicCompareDemo输出结果plaintexta bfalse a ctrue a ! btrue a bfalse a btrue b atrue a ctrue 考试及格三、重点难点的两种核心用法是新手最容易踩坑的运算符需区分基本类型和引用类型的不同判断逻辑1. 基本类型判断 “值是否相等”对于 int、double、char 等基本类型直接比较变量存储的 “实际值”这也是新手最常用的场景。示例char ch1 A; char ch2 A; System.out.println(ch1 ch2); // 输出true值相等 double num1 3.14; double num2 3.14000; System.out.println(num1 num2); // 输出true值相等2. 引用类型判断 “地址是否相等”对于 String、数组、自定义类等引用类型比较的是对象在内存中的地址是否为同一个对象而非对象的内容。可运行案例String 类型对比// 文件名ReferenceCompareDemo.java public class ReferenceCompareDemo { public static void main(String[] args) { // 场景1字符串常量池直接赋值 String s1 Java; String s2 Java; System.out.println(s1 s2 (s1 s2)); // 输出true地址相同 // 场景2new创建新对象 String s3 new String(Java); String s4 new String(Java); System.out.println(s3 s4 (s3 s4)); // 输出false地址不同 // 正确判断字符串内容相等用equals()方法 System.out.println(s3.equals(s4) s3.equals(s4)); // 输出true内容相同 // 场景3自定义类对比 Student stu1 new Student(张三, 20); Student stu2 new Student(张三, 20); System.out.println(stu1 stu2 (stu1 stu2)); // 输出false地址不同 } } // 自定义学生类 class Student { String name; int age; public Student(String name, int age) { this.name name; this.age age; } }运行结果plaintexts1 s2true s3 s4false s3.equals(s4)true stu1 stu2false核心结论基本类型比较值 → 用引用类型比较内容 → 用equals()方法如 String、自定义类引用类型比较是否为同一个对象 → 用极少用。四、比较运算符的优先级比较运算符的优先级低于算术运算符高于赋值运算符因此程序会先计算算术表达式再进行比较。示例验证// 文件名PriorityDemo.java public class PriorityDemo { public static void main(String[] args) { int x 5; int y 2; // 先算x y 7再算7 6 → true boolean result1 x y 6; System.out.println(x y 6 result1); // 输出true // 先算y * 3 6再算x 6 → true boolean result2 x y * 3; System.out.println(x y * 3 result2); // 输出true // 复合表达式结合括号改变优先级 boolean result3 (x y) * 2 15; // 先算(xy)7再算7*214最后1415→false System.out.println((x y) * 2 15 result3); // 输出false } }五、新手常见错误汇总1. 混淆和int num 10; // 错误把赋值当成比较if条件需要布尔值此处是赋值操作num5是int类型 if (num 5) { System.out.println(num等于5); }修正if (num 5)2. 用比较字符串 / 对象内容String str1 new String(Hello); String str2 new String(Hello); if (str1 str2) { // 错误比较地址而非内容 System.out.println(内容相等); }修正if (str1.equals(str2))3. 比较不同类型的数值自动类型转换short s 10; int i 10; System.out.println(s i); // 正确short自动转int比较值→true double d 10.0; System.out.println(i d); // 正确int自动转double比较值→true⚠️ 注意boolean 类型不能和任何类型比较编译报错boolean flag true; // System.out.println(flag 1); // 编译报错不兼容的类型4. 浮点数的精确比较问题浮点数float/double存在精度丢失不能直接用判断是否相等double m 0.1 0.2; double n 0.3; System.out.println(m n); // 输出false0.10.20.30000000000000004解决方案比较差值的绝对值是否小于极小值如 1e-9boolean isEqual Math.abs(m - n) 1e-9; System.out.println(isEqual); // 输出true总结比较运算符的结果是布尔值true/false分为相等性判断/!和大小判断///对基本类型比较 “值”对引用类型比较 “内存地址”引用类型比较内容需用equals()新手避坑重点区分赋值和比较、浮点数避免直接用比较、字符串内容比较用equals()。所有案例均可直接复制运行建议新手亲手敲一遍重点体会在基本类型和引用类型中的不同表现这是 Java 面试和开发中的高频考点