`

java equals方法解析

阅读更多
java equals方法解析

一般理解,在Java中equals方法是比较内容的,对象==是比较地址的,但是在看equals方法是发现问题并不是那么简单。看下面例子:
public class Test {

	private int i;
	
	public Test(int i){
		this.i = i;
	}
	public static void main(String[] args) {
		Test t1 = new Test(1);
		Test t2 = new Test(1);
		 System.out.println("Test--" + t1.equals(t2));
		 Integer inte = new Integer(1);
		 Integer inte1 = new Integer(1);
		 inte.equals(t1);
		 System.out.println("Integer--" + inte.equals(inte1));
		 HashMap hm = new HashMap();
	}
}

原来以为结果均会输出TRUE,但是实际测试后发现第一个为FALSE,第二个为TRUE。
于是查看了源码,问题一目了然了,首先看object.equals()方法的源码:
    public boolean equals(Object obj) {
        return (this == obj);
    }

我们可以看到他比较的还是两个对象的地址。
再看Integer.equals()方法的源码:
    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

看到它比较的是value。
所以在我们对对象内容进行比较时,需要重载对象的equals方法,这样比较的才是value。

分享到:
评论

相关推荐

    Java equals 方法与hashcode 方法的深入解析.rar

    Java equals 方法与hashcode 方法的深入解析.rar

    Java equals 方法与hashcode 方法的深入解析

    PS:本文使用jdk1.7解析1.Object类 的equals 方法 代码如下: /** * Indicates whether some other object is “equal to” this one. *  * The {@code equals} method implements an equivalence relation * on ...

    Java重写equals及hashcode方法流程解析

    主要介绍了Java重写equals及hashcode方法流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java解析Properties配置文件为对象Bean

    利用java的反射解析Properties文件转成对象 /** * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws ...

    解析Java对象的equals()和hashCode()的使用

    解析Java对象的equals()和hashCode()的使用

    Java解析XML工具类--(java源码)

    if ( true == value.equals( attributeValue ) ) { curElement = child; count ++; } } if ( 0 == count ) { throw new Exception( "找不到个符合条件的子节点!" ); } else if ( 1 ) { ...

    java深入解析

    103 话题18 一成不变——不可修改的String对象 107 话题19 钩深索隐——String字符最大长度的探索 111 话题20 追本溯源——追寻String字面常量的“极限” 116 话题21 旧调重弹——再论equals方法与“==”的 区别 ...

    Java自定义实现equals()方法过程解析

    主要介绍了Java自定义实现equals()方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java解析给定url

    HtmlParse,解析给定url中的中文字符,输出到文本文件中: url:可配置多个 输出路径:可配置 package com.lhs; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import ...

    Java实例高难度面试题及解析 - 展现你的编程实力!

    此外,我们还探讨了对象的哈希码、重写equals()和hashCode()方法的技巧,以及对象的序列化和反序列化。 通过研究和解答这些高难度问题,您将提升自己的编程水平,展现出对Java实例概念和相关技术的深入理解。无论您...

    java解析xml

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers....

    Java Object 类高难度进阶版面试题集锦解析Java Object类高难度面试题及答案解析

    提供了20道高难度的Java Object类面试题及详细答案解析,涵盖了equals()、hashCode()、toString()、clone()、finalize()等方法的重写和应用,以及对象的比较、克隆、标识哈希码等概念。适合准备Java面试的开发者深入...

    java8集合源码分析-CollectionDemo:自己复习集合框架时候的例子

    java8 集合源码分析 java基础复习 [TOC] 一、集合 1.Iterator ...hashCode方法相同,判断equals方法 ---LinkedHashSet: 有序,是HashSet的子类 2.TreeSet: 底层是二叉树,可对元素进行排序,默认是自然顺序

    java之Object类方法技术分享PPT

    主要包含Object类中的getClass()、hashCode()、equals()、toString()方法的使用和作用,还包含一个3D旋转模型,还包含几个常见的面试题的解析,可用作学生每周技术分享或者上台演讲,适用于大学计算机专业相关人士。

    java常用工具类的使用

    而Date的其他构造方法和普通方法的API都不容易实现国际化,因此目前Date类的大多数方法都被标识为过时,表示更灵活的时间类请参考java.util.Calendar。 Date的输出结果是按照国际通用格式输出的,而中国更习惯于...

    Java面试宝典-经典

    11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....

    Jsoup学习——Saz2Csv解析器

    5、Java中字符串的处理:String类和StringBuffer类,substring()、indexOf()、lastIndexOf()、replace()、replaceAll()、trim()、toLowerCase()、endsWith()、equals()、split()等方法的使用 6、Java类集:List,...

Global site tag (gtag.js) - Google Analytics