Equals()方法体现的编程思想
来源:互联网 发布:在淘宝上刷信用卡套现 编辑:程序博客网 时间:2024/06/14 01:36
在Java中,除接口这个特殊抽象类以外,类Object是所有类的基类。Equals()方法则是Object类中比较重要的方法,用来比较非空引用对象的地址值,返回布尔值。因为Object类中的equals方法当两个被比较的非空引用值x和y只有指向同一对象时才返回True。而在实际开发中,类的对象的地址值一般是不同的,比如我们要比较两个字符串类型的对象S1,S2。它们的地址值不同但是在堆内存中具体的值是相同的。这个时候如果直接用equals比较,返回false明显是不太符合要求的。因此我们常常要重写Object类的equals方法。
而在重写方法时,要以怎样的顺序重写才能达到代码最优呢?比如比较两个字符串类型的对象,常见的重写equals方法的步骤是这样的。
1、 判断你要比较的两个对象是否是字符串类型。如果不是,直接返回false。
2、 判断传进来的参数是否是字符串类型。如果不是,直接返回false。
3、 如果是相同类型:
A:把两个字符串都准换成字符数组
B:比较两个字符数组的长度。
C:然后依次比较他们对应位置的元素。
public class Equals {public boolean equals(Object anObject){//this 代表本类对象的引用,判断是否是同一对象if (this==anObject){return true;}//如果是同一类型的对象,则比较字符串的长度if (anObject instanceof String){//对anObject向下转型String anotherString=(String) anObject;//value在String中的定义 //private final char[] value//字符串 -- 底层字符数组。int n=value.length;//value.length -- this.value.length -- s1.toCharArray().length//把s1字符串转变成了一个字符数组//char[] value=s1.toCharArray();//char[] value={'h','e','l','l','o'};//把字符串s2也转变成了字符数组,然后获取长度,和n进行比较 //如果长度相等就进去。 //char[] value2 = {'h','e','l','l','o'}; if (n == anotherString.value.length) { //如果长度相同,就进来继续比较。 char v1[]=value;//{'h','e','l','l','o'} char v2[]=anotherString.value; //{'h','e','l','l','o'} int i=0; //n=5;是字符串的长度 while (n--!=0){ //n=4, //依次按索引位置比较每一个字符是否相同,如果不同,就返回false. //如果每个索引对应的值都相同,那么整个字符串是相同的。 if (v1[i] != v2[i]) return false; i++; } return true; } }return false;}}
在编写代码的时候要时刻注意代码的效率和代码的健壮性,所有重写equals方法的思维是:
1、判断传过来的对象是不是同一个。 //提高效率
2、判断传过来的对象是不是Student类型的。 //提高代码的健壮性。
3、对应的操作。 (向下转型,然后来比较)
0 0
- Equals()方法体现的编程思想
- 占位符体现的编程思想
- Filter,一种aop编程思想的体现
- COM思想很好的体现了面向接口编程思想。
- Linux驱动体现的编程思想---面向对象的编程思想
- java中多态的体现思想
- 《java编程思想》第三章之equals()方法
- 测试思想 QA的价值体现
- 将通用进行到底——分层思想的另类体现
- ERP体现的管理思想之众说纷纭-安尚
- ERP体现的管理思想之众说纷纭-安尚
- C声明变量的用法体现C++封装思想
- 黑马程序员---String练习中体现的思想
- 《STL源码剖析》学习--STL体现的思想
- 【ITOO】 EF框架之ORM思想的体现
- javascript中面向对象思想的体现(一)
- 举例说明java面向对象思想的体现:抽象类、接口
- 加班能体现编程的热情吗?
- 述标讲解技术方案感想
- golang make()内置函数
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
- 索引名字叫blog,type是post,id为1
- 文章内容 切换到MarkDown编辑器
- Equals()方法体现的编程思想
- PAT 解题报告 1074. Reversing Linked List (25)
- 检索一条记录
- JAVA设计模式(二十三)——开放封闭原则
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- 2的次幂表示
- 黑马程序员_java基础--继承与接口
- 聊聊并发(二)Java SE1.6中的Synchronized
- 两个goroutines里面的话: