`
hejiajunsh
  • 浏览: 403147 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

equals()和==的联系与区别

阅读更多

1.==的含义,如果是比较基本数据类型,那么就是比较数据类型字面值的大小。如果是比较引用数据类型,就是比较它们在内存地址上是否是相同的。

 

2.equals方法,是Object类的方法之一,所有的java类都有这个方法,区别只是自己有没有重写的问题。如果没有重写,那么也是直接比较内存地址是否相同。重写了,那就要看它们是怎么重写的。

 

看下面的例子

String str1 = "abc";
        String str2 = "abc";
        String str3=new String("abc");
        String str4=new String("abc");
        StringBuffer str5=new StringBuffer("abc");
        StringBuffer str6=new StringBuffer("abc");
        System.out.println("1:"+(str1==str2));
        System.out.println("2:"+(str1.equals(str2)));
        System.out.println("3:"+(str2==str3));
        System.out.println("4:"+(str2.equals(str3)));
        System.out.println("5:"+(str3==str4));
        System.out.println("6:"+(str3.equals(str4)));
        System.out.println("7:"+(str4.equals(str5)));
        System.out.println("8:"+(str5==str6));
        System.out.println("9:"+(str5.equals(str6)));

// 输出结果:
1:true
2:true
3:false
4:true
5:false
6:true
7:false
8:false
9:false

 

----------------------------------

说明:

String对象的初始化有两种方式。

str1和str2表示的"abc"都是存放在字符串池中,而在字符串池中,这两个"abc"其实是一个内存中的数据,

所以str1==str2是true。str1.equals(str2)是true。

 

str3和str4采用的new方式,那么它们对用的字符串"abc"都是在堆中非字符串池中,分别存放在堆中不同的地方,所以str2==str3是false。str3==str4是false。

 

而String和Stringbuffer除了都是直接继承Object之外,并没有其他的直接联系,两者完全是不相干的类。

所以才有str4==str5是false、str4.equals(str5)是false。

 

而StringBuffer也根本没有重写从父类继承的equals方法,所以str5==str6是false。str5.equals(str6)是false。

分享到:
评论

相关推荐

    C#中的Equals、RefrenceEquals和==的区别与联系

    C#中判断两个对象是否相等有Equals、RefrenceEquals和==三种,其中==为运算符,其它两个为方法,而Equals又有两种版本,一个是静态的,一个是虚拟的,虚拟的可以被实体类重写,静态的在方法体内也是调用虚拟的,如下...

    关于hashCode()和equals()的本质区别和联系

    关于hashCode()和equals()的本质区别和联系.doc

    详解hashCode()和equals()的本质区别和联系

    主要介绍了详解hashCode()和equals()的本质区别和联系,本文先对两种方法作了介绍,然后对二者联系进行分析,具有一定参考价值,需要的朋友可以了解下。

    java1_chapter918_extends.rar

    Java入门-Java学习路线扩展课程:equals的使用源码。 如有问题或好的建议,请与我联系!博客地址为:https://blog.csdn.net/atgfg/article/details/102576039

    值类型和引用类型的区别

    我这人不善于背理论的教条,喜欢把书本上那些生硬的话跟现实生活中常见 的事物联系起来理解和记忆。 直白点儿说:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。 声明一个值类型变量,编译器...

    涵盖了90%以上的面试题

    JSP和Servlet的区别和联系 什么是MVC模型 TCP的连接和释放过程 什么是长连接和短连接 长连接是如何实现的 计算机网络体系结构 谈谈你对Struts的理解。 谈谈你对Hibernate的理解。 谈谈你对Lucene和solr的理解 谈谈你...

    千方百计笔试题大全

    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...

    java面试宝典

    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...

    JAVA面试常见问题整理

    接着,文章详细解释了equals和hashCode的用法及区别,以及String、StringBuffer、StringBuilder的区别和适用场景。 此外,文章还涵盖了Java中的一些基本概念,如final、interface、abstract类、重载和重写等。同时...

    安卓java读取网页源码-questions:自问自答

    这三者有什么联系和区别 列举下 Java 的集合和继承关系 说下你对抽象类和接口的理解,以及两者的相同点和不同点 父类的静态方法能否被子类重写 描述下类的加载机制 说说你对 Java 反射的理解 什么是动态代理 在 Java...

    java基础题 很全面

    2. BS与CS的联系与区别。 24 3. JDO是什么? 25 4. Cookies 25 5. Sessions 25 6. Cookies和Sessions的比较 26 7. 过滤器 26 8. 什么是事件监听器? 27 9. EJB 28 10. CORBA是什么?用途是什么? 29 11. Spring ...

    Java面试宝典2020修订版V1.0.1.doc

    24、‘==’和equals的区别? 18 25、JAVA中Object类中有哪些常用方法? 19 26、heap和stack有什么区别。 19 27、GC是什么? 为什么要有GC? 20 28、什么是内部类?分为哪几种? 20 29、为什么需要内部类? 20 30、内部...

    JAVA面试题最全集

    简述 Java Server Page 和 Servlet 的联系和区别。 33.简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,...

    最新Java面试宝典pdf版

    1、BS与CS的联系与区别。 127 2、应用服务器与WEB SERVER的区别? 128 3、应用服务器有那些? 128 4、J2EE是什么? 128 5、J2EE是技术还是平台还是框架? 什么是J2EE 128 6、请对以下在J2EE中常用的名词进行解释(或...

    Java面试宝典2010版

    1、BS与CS的联系与区别。 2、应用服务器与WEB SERVER的区别? 3、应用服务器有那些? 4、J2EE是什么? 5、J2EE是技术还是平台还是框架? 什么是J2EE 6、请对以下在J2EE中常用的名词进行解释(或简单描述) 7、...

    Java面试笔试资料大全

    1、BS与CS的联系与区别。 127 2、应用服务器与WEB SERVER的区别? 128 3、应用服务器有那些? 128 4、J2EE是什么? 128 5、J2EE是技术还是平台还是框架? 什么是J2EE 128 6、请对以下在J2EE中常用的名词进行解释(或...

    2023年最新java面试大全

    【01期】Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系? 【02期】你能说说Spring框架中Bean的生命周期吗? 【03期】如何决定使用 HashMap 还是 TreeMap? 【04期】分库分表之后,id 主键如何处理...

    Java面试宝典-经典

    1、BS与CS的联系与区别。 127 2、应用服务器与WEB SERVER的区别? 128 3、应用服务器有那些? 128 4、J2EE是什么? 128 5、J2EE是技术还是平台还是框架? 什么是J2EE 128 6、请对以下在J2EE中常用的名词进行解释(或...

Global site tag (gtag.js) - Google Analytics