【Java】比较两个变量是否相等 什么时候用“==” 什么时候用“equals”
public static void main(String[] args) { Integer a = new Integer(1); Integer b = new Integer(1); System.out.println(a == b); // false(==:对比的是两个变量的内存地址,) System.out.println(a.equals(b)); // true System.out.println("============================="); Integer aa = 1; Integer bb = 1; System.out.println(aa == bb); // true System.out.println(aa.equals(bb)); // true /** * 总结 * * java与python的“==”,刚好相反 * * Java * “==”:对比的是内存地址 * “equals”:对比的是值(如Integer的equals是把对象转换为Integer类型然后再通过Integer类的intValue方法取值) * * Python * “==”:对比的是值 * “is”:对比的是内存地址 * */ }
备注:java基本数据类型(4类8种)
|
类型 |
默认值 |
整数类型 |
byte |
0 |
short |
0 |
|
int |
0 |
|
long |
0L |
|
浮点类型 |
float |
0.0f |
double |
0.0d |
|
字符类型 |
char |
'u0000' |
布尔类型 |
boolean |
false |
"==":对比的是两个变量(对象)的内存地址
"equals":对比的是两个变量(对象)的值(只有封装后对象才会有equals方法)
总结:
1、如果两个变量是基本数据类型(如int、char等),则直接用"=="对比是否相等即可,因为他们的值是一个常量,在内存中的地址是一样的(值一样的常量在内存中的地址也是一样的)
2、如果两个变量是封装后的数据类型(如Integer、String等),则用"equals"对比是否相等,因为他们是属于不同的对象,虽然值可能是一样的,但这两个对象在内存中的地址肯定不一样
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-07-07 【数据分析】+【Python】+股票数据分析