equals方法分析

equals方法默认等同于“==”,都是判断两个对象的地址是否相等,因为String类对equals方法进行了重写,所以只要内容一样,就是相等的。

例:String类重写Object类的equals方法判断两个字符串的内容是否相等

public class StringDemo {public static void main(String[] args) {String str1 = "www.jpc.com";String str2 = new String("www.jpc.com");System.out.println(str1.equals(str2));    //结果为true}
}

重写的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;
}

 判断思路:地址->长度->每个字符
参数:从以上代码得知equals方法有一个参数,该参数是Object类型;将str2传入该方法时str2的值被赋值给Object类型的变量(上转型对象)
返回值:该方法的返回值是boolean类型,在该例中是判断str1和str2两个字符串是否相等
第一个if语句
this是指当前对象,哪个对象调用了该方法,this就代表哪个对象,在该例中代表的就是str1
该判断比较两个对象的地址是否相等,若不相等则if语句中的内容跳过不执行;若相等表明它们是同一个对象,内容也必相等,返回true,方法结束
第二个if语句
判断传入的对象是否是String类的实例,如果不是则if语句中的内容跳过不执行;如果相等则将传入的对象下转型为String类型
内层if语句判断两个String类对象的长度是否相同,若不同则if语句中的内容跳过不执行,返回false,结束该方法;若相同则则将两个String类对象转换为字符数组
用while语句逐个比较相同下标的字符是否相等,只要有一组不同就返回false,结束该方法

String类重写的equals方法相关推荐

  1. String类中的equals方法与Object类中的equals方法的不同点

    1.首先我们看看Object类中的equals方法 public boolean equals(Object obj) {return (this == obj);} 我们可以看出Object类中判断 ...

  2. java重写面试题_Java面试题:重写了equals方法,为什么还要重写hashCode方法?

    核心问题:重写了equals方法,为什么还要重写hashCode方法? 这不仅仅是一道面试题,而且是关系到我们的代码是否健壮和正确的问题.在前面两篇文章涉及到了equals方法的底层讲解:<说说 ...

  3. 关于String重写的equals方法

    想了想自己也想尝试写写博客,分享自己作为初学者的一些学习心得,才刚刚学习没几天,闲谈而已,请大佬多多指教,第一:关于String重写的equals方法: 1.String 类为啥要重写equals方法 ...

  4. 重写Java Object类中的equals()方法

    Java中的Object类中的equals方法 Object类的equals方法 重写Object类的equals()方法 Person类默认继承了Object类,所以可以使用Object类的equa ...

  5. Object类toString()和equals()方法剖析

    Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object. toString()方法 由于toString方法返回的 ...

  6. JAVA进阶教学之(Object类中的equals方法)

    public boolean equals(Object obj){return (this == obj); } 原始equals方法是判断两个对象的内存地址是否相等的(内存地址相等,保存的值也相等 ...

  7. IDEA自动重写的equals方法分析

    文章目录 一.创建类和自动重写equals方法 二.分析 一.创建类和自动重写equals方法 随便创建一个类,然后ctrl+insert生成equals方法 class Student {Strin ...

  8. 自己手动重写的equals方法与自动生成重写的equals方法的区别

    自己手动重写的equals方法会有一些漏洞,比如Man类继承自Person类,当姓名和年龄相同时就认为这两个对象是相同的,当我们用一个Person对象和Man对象去比较,这两个对象肯定应该是不同的,但 ...

  9. 17.Java常用实用类之String类中常用的方法以及一般应用场景,final关键字

    文章目录 1.String类学习 1.1.什么是String类 1.2.String类中常用的方法 1.2.1. 构造方法 1.2.2.public int length() 1.2.3.public ...

最新文章

  1. java cmd copy_将CMD输出复制到剪贴板
  2. Android—监听器
  3. 华三交换机升级的ipe文件_弱电工程工业以太网交换机电源故障总结
  4. 设计模式-Observer模式
  5. asp.net model 验证和取出 ErrorMessage 信息
  6. 前端:Element UI 多选框组用法笔记
  7. poe交换机的作用和优点
  8. linux双网卡架设FTP,LINUX系统上架设FTP服务器
  9. html table 转置,jQuery+CSS实现的table表格行列转置功能示例
  10. android studio没有logcat窗口_区块链研究实验室|从Android调用区块链智能合约
  11. 6大维度重磅升级,容器云平台BeyondContainer发布1.8版本
  12. 汉字为什么能流传至今_为什么中国的文字流传至今?
  13. 联想 M7400 pro Linux下 CUPS 驱动安装
  14. Error in cool_function[1] : object of type ‘closure‘ is not subsettable
  15. Hexo博客NexT主题开启文章目录和调整样式
  16. 文献阅读--Scaling Laws for Neural Lauguage Models
  17. 学大数据专业未来应该怎么就业?有什么岗位?
  18. 中职计算机基础辅导书,中职计算机基础 (938)(16页)-原创力文档
  19. 支付宝生活号开发中所遇到的困难及解决记录
  20. 分享105个NET源码ASP源码,总有一款适合您

热门文章

  1. 蓝牙运动耳机哪个好,五款适合运动的蓝牙运动耳机
  2. 一行代码损失数亿美元!来看看编程史上的著名bug!
  3. 华为留不住人才,任正非痛心
  4. cstring转为string vc_VC之CString,wchar_t,int,string,char*之间的转换-阿里云开发者社区
  5. vue中v-on支持的事件总结
  6. 百家姓128进制的权重和编码
  7. win10文件服务器ssd当缓存盘,为磁盘启用写入缓存,提升Win10系统性能
  8. 试卷8449c 语言,普通高等学校2018届高三招生全国统一考试仿真卷(三)英语试题(含答案)...
  9. java本质_Java深入解析 透析Java本质的36个话题_源雷技术空间
  10. 戴尔G3 Java_求救!!!各位买戴尔G3的大哥们,我不小心把环境变量里的pa