news 2026/5/1 3:45:30

【Java 新手必看】比较运算符:从概念到实战,附可运行代码案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Java 新手必看】比较运算符:从概念到实战,附可运行代码案例

比较运算符是 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)); // 输出:false(10≠20) System.out.println("a == c:" + (a == c)); // 输出:true(10和10.0数值相等) System.out.println("a != b:" + (a != b)); // 输出:true(10≠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. 运行步骤与结果

  1. 新建BasicCompareDemo.java文件,粘贴上述代码;
  2. 命令行执行编译:javac BasicCompareDemo.java
  3. 执行运行:java BasicCompareDemo
  4. 输出结果:

plaintext

a == b:false a == c:true a != b:true a > b:false a < b:true b >= a:true a <= c:true 考试及格

三、重点难点:==的两种核心用法

==是新手最容易踩坑的运算符,需区分基本类型引用类型的不同判断逻辑:

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(地址相同) // 场景2:new创建新对象 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; } }
运行结果:

plaintext

s1 == s2:true s3 == s4:false s3.equals(s4):true stu1 == stu2:false
核心结论:
  • 基本类型比较值 → 用==
  • 引用类型比较内容 → 用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; // 先算(x+y)=7,再算7*2=14,最后14>15→false System.out.println("(x + y) * 2 > 15:" + result3); // 输出:false } }

五、新手常见错误汇总

1. 混淆===

int num = 10; // 错误:把赋值=当成比较==,if条件需要布尔值,此处是赋值操作(num=5是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); // 输出:false(0.1+0.2=0.30000000000000004)

解决方案:比较差值的绝对值是否小于极小值(如 1e-9):

boolean isEqual = Math.abs(m - n) < 1e-9; System.out.println(isEqual); // 输出:true

总结

  1. 比较运算符的结果是布尔值(true/false),分为相等性判断(==/!=)和大小判断(>/</>=/<=);
  2. ==对基本类型比较 “值”,对引用类型比较 “内存地址”,引用类型比较内容需用equals()
  3. 新手避坑重点:区分=(赋值)和==(比较)、浮点数避免直接用==比较、字符串内容比较用equals()

所有案例均可直接复制运行,建议新手亲手敲一遍,重点体会==在基本类型和引用类型中的不同表现,这是 Java 面试和开发中的高频考点!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 21:58:13

精准与高效:3D扫描技术如何重塑康复辅具设计与制造

在康复医疗与个性化辅具制造领域&#xff0c;一个核心问题始终萦绕在设计师、工程师和患者心头&#xff1a;“扫描获取的数据&#xff0c;能直接用来制作假肢或矫形器等康复辅具吗&#xff1f;” 这个问题的答案&#xff0c;不仅关乎技术的可能性&#xff0c;更关乎效率、成本与…

作者头像 李华
网站建设 2026/4/23 10:10:05

【读论文】EQ情感智能benchmark:EmoBench

摘要 在大型语言模型展现出惊人的逻辑推理能力的今天,其情感智能究竟处于何种水平?今天一起回顾看下联合了清华大学、密歇根大学、香港大学等多家顶尖机构,基于心理学理论构建了一套全新的评估基准。它不再满足于让模型识别“开心”或“难过”,而是要求模型理解**“为什么…

作者头像 李华
网站建设 2026/4/29 17:47:51

答辩现场,评审组教授最不满意的 5 种回答方式,切记!切记!切记!

很多同学在答辩结束后都会说一句话&#xff1a;“其实我都会&#xff0c;但不知道为什么老师一直追问。”问题往往不在不会&#xff0c; 而在回答方式不对。站在评审组教授的角度&#xff0c; 下面这 5 种回答方式&#xff0c; 是最容易让他们皱眉、甚至继续追问的。一、“这个…

作者头像 李华
网站建设 2026/4/23 10:15:12

程序员必看!企业级私有化部署开源大模型选型与实战指南(建议收藏)

文章介绍了支持私有化部署的开源大模型选型与部署指南&#xff0c;包括国际主流和中文优秀模型。详细分析了个人开发、中小企业和大规模生产三种场景下的硬件配置、软件框架和性价比方案&#xff0c;帮助企业和开发者根据需求选择合适的模型和部署架构&#xff0c;实现数据安全…

作者头像 李华