关于Java的对象equals方法
2014-01-10 12:03
302 查看
不是所有的equals都是比较整个对象的。
#1. 普通Object类:
先看源码:
看到了没,用“==”,比较的是对象引用,也就是地址。假如两个对象传入的参数一样,但是都用new去创建,地址就不同了,那么用equals返回的就是false。
#2. String类:
先看源码:
比较的是内容,所以只要内容一样,用new去创建的两个String对象,调用equals返回true。
#3. Integer类
先看源码:
一样是比较内容。
#1. 普通Object类:
先看源码:
public boolean equals(Object obj) { return (this == obj); }
看到了没,用“==”,比较的是对象引用,也就是地址。假如两个对象传入的参数一样,但是都用new去创建,地址就不同了,那么用equals返回的就是false。
#2. 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; }
比较的是内容,所以只要内容一样,用new去创建的两个String对象,调用equals返回true。
#3. Integer类
先看源码:
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
一样是比较内容。
相关文章推荐
- 关于Java的对象equals方法
- 【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明
- 七、java的面向对象程序设计(详解equals方法)
- JAVA中两个不同对象的equals方法使用注意点
- 关于Java两种同步方法的理解(代码块级同步对象设置)
- 关于java中比较所用的"=="与s.equals()方法的不同
- 关于将Java中序列化对象写入byte[]遇到的一些问题及解决方法
- Effective Java - 对于所有对象都通用的方法 - 覆盖 equals 时请遵守通用约定
- Java进阶:深入equals方法对象相等比较
- 关于== 、equals和instanceof方法你想知道的一切——Java
- Java J2SE / 基础类 中关于 为什么要改写java中Object类的equals方法 的 问题
- Java 中String对象比较方法equals和等号==
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- Java之面向对象例子(三) 多态,重写,重载,equals()方法和toString()方法的重写
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- Java中关于==和equal的区别 以及equals()方法重写
- 浅谈java对象的equals方法
- java中操作符“==”与对象equals()方法的比较
- 关于java的equals方法
- 【JAVA学习】java中==、equals()、hashCode()都和对象的比较有关,在java中这三者各有什么用处呢,即java中为什么需要设计这三种对象的比较方法呢?