`

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()`方法是两个非常重要的概念,它们主要用于对象的比较和哈希表的高效运作。本解析将深入探讨这两个方法的用途、实现原理以及它们之间的关联。 首先,`equals()`方法是...

    equals方法的重写.docx

    ### equals方法重写知识点解析 #### 一、equals方法简介 `equals`方法是Java语言中Object类的一个重要成员方法,其默认实现是比较两个对象的内存地址是否相同(即是否为同一个对象)。为了使对象之间能够基于内容...

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

    "Java重写equals及hashcode方法流程解析" Java中的equals和hashCode方法是两个非常重要的方法,它们都是Object类中的方法。在实际开发中,正确地重写这两个方法对于确保程序的正确性和性能至关重要。下面,我们将...

    java完美解析pdm

    每个Table对应一个Java类,Column则作为类的成员变量,主键和外键可以转化为getter和setter方法,以及可能的构造函数和equals、hashCode方法。这样,开发人员就可以直接使用这些Java Bean进行业务开发,无需手动编写...

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

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是两个非常重要的概念,尤其是在对象比较和数据结构(如哈希表)中。`equals()` 方法用于判断两个对象是否相等,而 `hashCode()` 方法则与对象的哈希值有关,这...

    java解析json的方法

    对于Java开发者来说,能够熟练地掌握JSON的解析方法是非常重要的。 #### 方法一:使用`org.json`库解析JSON 在这个方法中,我们使用了`org.json`库中的`JSONObject`和`JSONArray`类来解析JSON字符串。下面通过一个...

    Java源码解析——看优秀源码最能使人进步

    Java.lang.String类是Java语言中的一种基本数据类型,该类的定义、字段属性、构造方法、equals方法、hashCode方法、charAt方法、compareTo方法、concat方法、indexOf方法、replace方法、split方法、substring方法、...

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

    深入解析Java对象的equals()和hashCode()的使用 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个。在多数情况下,这两个函数是不用考虑的,直接使用它们...

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

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

    java中用dom解析xml的经典入门级文档

    ### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见的需求。XML(Extensible Markup Language,可扩展标记语言)作为一种数据存储和传输的标准格式,在不同系统间的数据交换中扮演着...

    java解析xml例子

    理解并掌握这些解析方法对于Java开发者来说非常重要,特别是当需要处理XML数据时。无论是在Web服务、配置文件还是数据交换场景中,XML解析都是一个关键的技能。你可以根据实际需求选择适合的解析方式。在实际项目中...

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

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

    【面试必备】JAVA 最常见面试题全解析 附 PDF.pdf

    根据给定文件内容,这里涉及的知识点涵盖了Java面试中的多个方面,包括但不限于JDK与JRE的区别、Java基本类型与引用类型中"=="和"equals"方法的区别与实现原理等。下面将详细展开这些知识点。 ### JDK与JRE的区别 ...

    java解析xml的4种经典方法

    为了处理XML文档,Java提供了多种解析方法。本文将详细介绍四种经典的Java XML解析技术:DOM、SAX、StAX以及JDOM。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,创建一个树形结构...

    JAVA的XML解析的四种方法

    下面将详细介绍这四种XML解析方法。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,即DOM树。因此,DOM解析适合小到中型的XML文档,对于大型文档可能会消耗大量内存。以下是一个简单的DOM...

    kettle解析json串

    本文将详细介绍使用Java库解析JSON的基本方法以及如何在Kettle环境中实现这一过程。 ### Kettle与JSON解析概述 #### 1. **Kettle简介** - Kettle(Pentaho Data Integration,简称PDI)是一款开源的数据集成工具...

Global site tag (gtag.js) - Google Analytics