关于String类中重写的equals方法
请先看下面这段代码:
public class EqualsTest {
    public static void main(String[] args) {
        EqualsTest e1 = new EqualsTest();
        EqualsTest e2 = new EqualsTest();
        System.out.println(e1 == e2);
        System.out.println(e1.equals(e2));
      
        String s1 = new String();
        String s2 = new String();
        System.out.println(s1.equals(s2));
      
        EqualsTest e3 = e2;
        System.out.println(e3.equals(e2));  
    }
}

其执行结果是:

false
false
true
true
大家知道“==”在java中如果用于两个对象的引用的话,那么只有当这两个引用指向同一块堆空间的话,才能返回TURE,EqualsTest类是继承Object类的,此时EqualsTest的对象s1调用的equals方法是父类Object类的方法,而Object源代码中的equals方法的方法体中是这么写的:
public boolean equals(Object o) {
      return (this == o);
}

所以equals方法的实现原理与“==”操作符一样。返回false;
但是String类中重写了equals方法,他的方法体满足了:只要两个引用所指向的对象是两块含有一样字样的字符串的话,那么就返回true。

而最下面一个true的原因是:直接把e2的引用赋给了e3,所以两个引用指向同一块堆内存。所以e2 == e3,所以他的equals虽然没有重写,也是返回true;

转载于:https://blog.51cto.com/jeiofw/961901

java string equal 与==的区别相关推荐

  1. Java中equal和==的区别

    equal和==均表示相等的意思,但是它们进行实际的相等的判定的时候,却有非常大的区别.这还得从JAVA的堆栈说起.初学者对他们的两者的概念的理解很容易模糊.在实际编程工作中就容易造成一些不容易发现的 ...

  2. JAVA中String与StringBuffer的区别

    String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...

  3. Java中string与String区别_JAVA中String与StringBuffer的区别

    JAVA中String与StringBuffer的区别 2009-12-3文字大小:大中小 在java中有3个类来负责字符的操作. 1.Character 是执行 单个字符操作的, 2.String ...

  4. Java中stringbutter_java中string与ButterString的区别

    String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...

  5. 【翻译】Java中String, StringBuffer, StringBuilder的区别

    2019独角兽企业重金招聘Python工程师标准>>> String 是  Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...

  6. string.Compare字符串比较函数中文详解以及与Equal、==的区别

    Chinar blog :www.chinar.xin String 比较函数详解 本文提供全流程,中文翻译 助力快速理解 String 字符串比较函数的区别 为初学者节省宝贵的时间,避免采坑! Ch ...

  7. Java - String源码解析及常见面试问题

    文章目录 Pre Q1: String 是如何实现的? Q2: String 有哪些重要的方法? 构造函数 equals() compareTo() [equals() vs compareTo() ...

  8. java const string_深入研究Java String

    开始写 Java 一年来,一直都是遇到什么问题再去解决,还没有主动的深入的去学习过 Java 语言的特性和深入阅读 JDK 的源码.既然决定今后靠 Java 吃饭,还是得花些心思在上面,放弃一些打游戏 ...

  9. Java String intern()方法

    引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...

最新文章

  1. 虚拟机管理你的服务器,全面解析VMware的虚拟机管理解决方案
  2. Python判断文件、文件夹是否存在,不存在则创建
  3. android应用可以访问/dev下设备节点
  4. java与c应用,Java和C应用程序之间的IPC
  5. typedef void(*Fun)(void);
  6. RabbitMQ—为什么使用信道channel
  7. Android学习之PopupWindow
  8. TTButton 的正确使用的方法
  9. -moz、-ms、-webkit
  10. 在ant中将依赖jar包一并打包的方法
  11. Mysql 演示示例存储过程
  12. Hibernate 懒加载 Unable to evaluate the expression Method threw ‘org.hibernate.LazyInitializationExcept
  13. 游戏编程精粹1---数学技巧---可预测随机数---2
  14. Latex bare_jrnl模板报错:something‘s wrong--perhaps a missing\item. \end{thebibliography}
  15. 学习July博文总结——支持向量机(SVM)的深入理解(下)
  16. 亲自动手搭建微服务框架和测试环境-1-背景
  17. 二维码制作教程分享,大家一起来学习吧!
  18. android 9 vxp 闪退,XPrivacyLua限制了权限的应用无法打开
  19. AndroidStudio(Idea) 快捷键错乱,insert键乱入,复制粘贴查找快捷键无效
  20. vSphere Client无法连接vSphere server解决一例

热门文章

  1. 最短路dijkstra算法详解_图论系列开始填坑--Dijkstra,单源最短路
  2. 最近两周的前后端交互
  3. html树形结构_数据结构-线性表.md
  4. 模型保存的方法-----仅保存架构
  5. 深度卷积神经网络的水稻穗瘟病检测方法
  6. 强化学习组队学习task01——基础
  7. 从零开始刷Leetcode——数组(31.33)
  8. keras版Mask-RCNN来训练自己的目标检测数据集
  9. 行车环境实时语义分割与深度估计
  10. 大神总结的机器学习的数学基础,掌握这些足够