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

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

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

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

equals与"=="的区别:

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

总结:
1、功能不同

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

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

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

2、定义不同

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值