==与 equal()区别

 

== 为运算符,equal 为String数据类型的比较方法;相同内容的对象地址不一定相同,但相相同地址的对象内容一定相同;

== 比较的是值是否相等,equal比较的是是否是同一个对象。

db6a6219369142acba543f08464c2c4c.jpeg

 基本概念不同

对于==,比较的是值是否相等

如果作用于基本数据类型的变量,则直接比较其存储的 值是否相等,

如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。

      其实==比较的不管是基本数据类型,还是引用数据类型的变量,比较的都是值,只是引用类型变量存的值是对象的地址

2)对于equals方法,比较的是是否是同一个对象

首先,equals()方法不能作用于基本数据类型的变量,

另外,equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,所以说所有类中的equals()方法都继承自Object类,在没有重写equals()方法的类中,调用equals()方法其实和使用==的效果一样,也是比较的是引用类型的变量所指向的对象的地址,不过,Java提供的类中,有些类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值,比如String类。

7876837e625a49a0a877e292b261280d.jpg

 

两者区别:

== 为运算符   equal 为String数据类型的比较方法.equal()两者的比较范围一方面是基础数据类型(例如 int a = 1),== 与 equal 都是作用于比较对象内容(堆)是否相同。另一方面则是引用对象类型(例如 int a = new int(1)), == 与 equal 都是作用于比较对象内存地址(栈)是否相同。

1、功能不同。'=='是判断两个变量或实例是不是指向同一个内存空间。'equals'是判断两个变量或实例所指向的内存空间的值是不是相同。

2、定义不同。'equals'在JAVA中是一个方法。'=='在JAVA中只是一个运算符合。

3、运行速度不同。'=='比'equals'运行速度快,因为'=='只是比较引用。'equals'比'=='运行速度要慢。

需要注意的是:

1.equal在源码中的实现为一下存在形式,可以被重写

public boolean equals(Object obj) { return (this == obj);}

2.相同内容的对象地址不一定相同,但相相同地址的对象内容一定相同。

例如:


String s1,s2,s3 = "abc", s4 ="abc" ;

s1 = new String("abc");

s2 = new String("abc");

那么:

s1==s2   是 false      //两个变量的内存地址不一样,也就是说它们指向的对象不 一样,故不相等。

s1.equals(s2) 是 true    //两个变量的所包含的内容是abc,故相等。

注意如果:         

StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");

结果:

s1.equals(s2)  //是false

解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,而Object类中的equals方法是用来比较“地址”的,所以等于false.

注意(2)

对于s3和s4来说,有一点不一样要引起注意,由于s3和s4是两个字符串常量所生成的变量,其中所存放的内存地址是相等的,所以s3==s4是true(即使没有s3=s4这样一个赋值语句)

总结

面试时候从三个方面进行回答,对象类型不同,比较的对象不同和运行速度不同,这样可以给面试官留下好的运行,虽然看起来貌似比较简单,但是你这样回答闲的非常专业和你的知识面水平比较广

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值