面试中常问到的“==” 与 equals 的区别

本文探讨了Java中==运算符与equals方法的区别。==用于比较两个对象的内存地址,判断它们是否为同一对象;而equals则用于比较两个对象的实际内容是否相同。文章还介绍了JVM内存分配的基础知识。

在面试中常常被问到“==” 与equals的区别,那我们就这个问题讨论

首先我们知道内存分配知识

  •   在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用。还需注意的一点,基本数据类型是存储在栈内存中。

equals与"=="的区别:

  “==”比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。
  equals是判断两个变量或实例所指向的内存空间的值是不是相同
此图片为网络图片,如有侵权,联系删除
注:此图片为网络图片,如有侵权,联系删除

总结:
1、功能不同

"=="是判断两个变量或实例是不是指向同一个内存空间。

"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。

即: ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较

2、定义不同

"equals"在JAVA中是一个方法。

"=="在JAVA中只是一个运算符合。

==指引用是否相同, equals()指的是值是否相同

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值