判断java中两个对象是否相等
来源:互联网 发布:数控铣床仿真软件 编辑:程序博客网 时间:2024/05/01 03:37
一、java中的基本数据类型(int、double、short、long、byte、float、boolean、char)判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false。
二、但是java中的引用类型的对象比较变态,假设有两个引用对象obj1,obj2,
obj1==obj2 判断是obj1,obj2这两个引用变量是否相等,即它们所指向的对象是否为同一个对象。言外之意就是要求两个变量所指内存地址相等的时候,才能返回true,每个对象都有自己的一块内存,因此必须指向同一个对象才返回ture。
三、如果想要自定义两个对象(不是一个对象,即这两个对象分别有自己的一块内存)是否相等的规则,那么必须在对象的类定义中重写equals()方法,如果不重写equals()方法的话,默认的比较方式是比较两个对象是否为同一个对象。
在Java API中,有些类重写了equals()方法,它们的比较规则是:当且仅当该equals方法参数不是 null,两个变量的类型、内容都相同,则比较结果为true。这些类包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等,太多太多了,但是常见的就这些了,具体可以查看API中类的equals()方法,就知道了。
重写equals()方法的步骤一般如下:
1、先用“==”判断是否相等。
2、判断equals()方法的参数是否为null,如果为null,则返回false;因为当前对象不可能为null,如果为null,则不能调用其equals()方法,否则抛java.lang.NullPointerException异常。
3、当参数不为null,则如果两个对象的运行时类(通过getClass()获取)不相等,返回false,否则继续判断。
4、判断类的成员是否对应相等。往下就随意发挥了。
String类中的equals()方法源码:
public boolean equals(Object anObject){ //如果是同一个对象 if (this == anObject) { return true; } //如果传递进来的参数是String类的实例 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;}
对于object类的equals()方法,判断调用该方法的对象与要比较的对象是不是同一个对象(判断地址),而String类中的equals()方法,则判断当前字符串与传递进来的字符串的内容是否一致。
object类中的equals()方法:
public boolean equals(Object obj){ //调用equal的对象的地址和参数对象的地址是否相等 return (this == obj);}
另外,对于java中的其他类,如果没有重写object类中的equals()方法,我们就可以认为调用该类的equals()方法就是判断这两个类是不是同一个类。只要是使用new类名(),这种形式生成的类(除单例外),我们都可以认为是不同的类(地址不同)。
- java中判断两个对象是否相等
- 判断java中两个对象是否相等
- 判断java中两个对象是否相等
- 判断java中两个对象是否相等
- 判断java中两个对象是否相等
- 学习体会:在JAVA中如何判断两个对象是否相等
- java中判断两个数组是否相等
- 判断两个对象是否相等
- Java中如何判断两个对象是否相等(Java equals and ==)
- java中判断两个对象是否相等的方法和代码
- 在java的集合中是怎么判断两个对象是否相等的?(重要!)
- 【知识】java中判断两个字符串是否相等的问题
- Java中如何判断两个String是否相等
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- 如何发表期刊论文
- Java->Android并发编程引气入门篇
- 从问题出发解析Activity、Window,View关系
- 【caffe-windows】全卷积网络特征图分析
- React Native 0.31 Bundle 预加载优化
- 判断java中两个对象是否相等
- 从零开始的Android新项目10
- request获得当前浏览器访问全部URL
- 使用Mockito和Roboletric进行Android单元测试
- 【学习笔记】wordpress使用总结
- 06.数据的完整性
- park,clark和ipark浅析
- 求1+2+…+n
- ajax获取本地数据实例