作者:知乎用户
链接:https://www.zhihu.com/question/26872848/answer/34364603
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

简单易懂

Java 语言里的 equals方法其实是交给开发者去覆写的,让开发者自己去定义满足什么条件的两个Object是equal的。所以我们不能单纯的说equals到底比较的是什么。你想知道一个类的equals方法是什么意思就是要去看定义。Java中默认的 equals方法实现如下:public boolean equals(Object obj) {
return (this == obj);
}
而String类则覆写了这个方法,直观的讲就是比较字符是不是都相同。public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n– != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}

醍醐灌顶

https://www.zhihu.com/question/26872848

equals 和 == 的区别?知乎转载相关推荐

  1. Java,哈希码以及equals和==的区别(转载)

    从开始学习Java,哈希码以及equals和==的区别就一直困扰着我.     要想明白equals和==的区别首先应该了解什么是哈希码,因为在jdk的类库中不管是object实现的equals()方 ...

  2. 【Java常识】6.0面向对象认知和Eclipse的实用使用、==号和equals方法的区别

    1.曾经写过很多自以为很通俗易懂的面向对象的解释. 如下是目前最通俗的一种解释: 2.Eclipse的补充解释. 运行的快捷键:F11. 3.Eclipse快捷键大全 大全放本文最后,这里主要放常用的 ...

  3. JAVA 中equals()与==的区别

    原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...

  4. c# equals与==的区别

    c# equals与==的区别 对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false.对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 ...

  5. Equals 和 == 的区别

    在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型. byte(1).sbyte(1).short(2).u ...

  6. equals()与==的区别

    "=="比较两个变量本身的值,即两个对象在内存中的首地址. "equals()"比较字符串中所包含的内容是否相同. 比如: String s1,s2,s3 = ...

  7. Equals,ReferenceEquals,==的区别

    Equals,ReferenceEquals,==的区别 在.net中有几种比较相等的方法 object的静态ReferenceEquals() object的静态Equals() object的示例 ...

  8. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  9. 面试官:谈谈equals() 和 == 的区别

    引言 谈谈equals() 和 == 的区别,这是一个非常经典的问题,不是特别难,面试也时有问道:但是很多小伙伴在面试时脑子却一片空白,痛失offer:所以在这里我详细介绍一下这两者的区别,希望对你能 ...

  10. Java基础 抽象类和接口的区别、equals 与 == 的区别

    一.抽象类和接口有什么区别 抽象类与接口都用于抽象,但是抽象类可以有自己的部分实现,而接口规范某一行为,调用者实现这个接口. 主要区别: 1.抽象类还是类只能单继承,而接口却可以多实现. 2.抽象类满 ...

最新文章

  1. python参数化_Python unittest 简单实现参数化的方法
  2. Java反射机制demo(四)—获取一个类的父类和实现的接口
  3. 2000坐标转换成经纬度_ArcGIS中的坐标问题快问快答
  4. HD 1525 Euclid's Game
  5. Ubuntu 14.04 为 root 帐号开启 SSH 登录
  6. DOCKER windows 7 详细安装教程
  7. 高能!这些段子已刷爆大学老师朋友圈
  8. 产品经理如何晋升为产品总监
  9. mysql监控sql_如何实时监控mysql中的SQL语句的执行情况
  10. eclipse javafx找不到或无法加载主类_JVM类加载
  11. @vue-cli的安装及vue项目创建
  12. IIC协议详解,附单片机软件模拟源码
  13. 如何将鼠标计算机配置放到板载,罗技G500S游戏鼠标配备有板载内存让鼠标脱离驱动实现自定义功能...
  14. 【云驻共创】当HarmonyOS走进课堂是种什么体验
  15. python数据分析之数据分析(步骤)流程
  16. Dijkstra算法(单源最短路径)
  17. final修饰局部变量
  18. 百度开放云·10大解决方案
  19. VS2013+OBS开发
  20. mysql,无法修改密码

热门文章

  1. 中大型计算机代表型号,目前个人计算机主要机型.doc
  2. java .item,javabb-javaitem-cloud
  3. JAVA入门级教学之(编写第一个HelloWorld程序)
  4. 安装应用需要打开未知来源权限_打开安卓这个开关 不让流氓软件肆意妄为
  5. 求ax bx c 0的根c语言,关于求方程ax2+bx+c=0根的问题
  6. python判断字符_Python判断字符串是否为字母或者数字(浮点数)
  7. 安卓手机主题软件_安卓手机安装不了软件原因和方法
  8. 定点运算和浮点运算_C2000浮点运算注意事项——CPU和CLA的差异及误差处理技巧...
  9. java 多进程多线程_Java并发编程原理与实战三:多线程与多进程的联系以及上下文切换所导致资源浪费问题...
  10. python中的seed_Python seed() 函数 - Python 教程 - 自强学堂