首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java面试篇之equals和==的区别究竟在哪?

java面试篇之equals和==的区别究竟在哪?

原创
作者头像
码农王同学
修改2019-10-21 12:06:05
6110
修改2019-10-21 12:06:05
举报
文章被收录于专栏:后端Coder后端Coder

打算今天分享的内容其实是和上篇的理论内容有点关系,和接下来需要分享的文章相关的,这篇文章我们就说下引用和值之间的区别,也是java面试会问到的点,掌握这个出去面试也不再为难了,搬好小板凳,继续咯。

我们先说下java中两种类型吧,做下铺垫内容,避免看到下面的内容时一头雾水,不知所措,java由于是面向对象的一门高级语言(相对于汇编语言来说的),java分为基本数据类型和引用类型,基本数据类型基本上是int,char,boolean等8种常用的类型,另外一种就是引用类型了。

好了,==在基本数据类型和引用类型做比较时是不一样的,基本类型比较的是值是否相同,对于引用类型来说比较的当然是引用是否一样了。为了加深我们对其的理解程度,附上一段代码,希望你可以明白。

public static void main(String[] args) {
    String x="hello";
    String y="hello";
    String z=new String("hello");
    System.out.println(x==y);//true
    System.out.println(x==z);//false
    System.out.println(x.equals(y));//true
    System.out.println(x.equals(z));//true
}

自己将代码写入到自己的IDE环境里进行运行一下,一目了然,由于x,y指向的是同一个对象引用,所以==在进行引用类型判断是true,但是z对象由于是new String("hello"),从新在堆空间里进行了新的一块内存的划分,导致引用对象的地址不一样了,所以x==z就是false。这样你明白了吧。

下面我们说下equals()方法了,其实equals()方法也是对引用进行比较的,看下代码先。

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

在这你可能会有点疑问为什么String对象在用equals()方法进行判断时,返回的是true呢?因为String重写了equlas方法,看下String重写的equals方法的代码,你就明白了。

public boolean equals(Object anObject) {        if (this == anObject) {            return true;        }        if (anObject instanceof String) {            String anotherString = (String)anObject;            int n = value.length;            if (n == anotherString.value.length) {                char v1[] = value;                char v2[] = anotherString.value;                int i = 0;                while (n-- != 0) {                    if (v1[i] != v2[i])                        return false;                    i++;                }                return true;            }        }        return false;    }

其实,说到这里,我们今天要分享的这篇文章就结束了,现在还记得电话面试时面试官问到的这些内容,掌握这些内容,再面试这类问题时就不会觉得很尴尬,今天想分享的就是这些了,希望可以帮助到阅读这篇文章的你,关注微信号后端Coder,喜欢的可以分享和转发文章。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档