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()`方法是两个非常重要的概念,它们主要用于对象的比较和哈希表的高效运作。本解析将深入探讨这两个方法的用途、实现原理以及它们之间的关联。 首先,`equals()`方法是...
### equals方法重写知识点解析 #### 一、equals方法简介 `equals`方法是Java语言中Object类的一个重要成员方法,其默认实现是比较两个对象的内存地址是否相同(即是否为同一个对象)。为了使对象之间能够基于内容...
每个Table对应一个Java类,Column则作为类的成员变量,主键和外键可以转化为getter和setter方法,以及可能的构造函数和equals、hashCode方法。这样,开发人员就可以直接使用这些Java Bean进行业务开发,无需手动编写...
"Java重写equals及hashcode方法流程解析" Java中的equals和hashCode方法是两个非常重要的方法,它们都是Object类中的方法。在实际开发中,正确地重写这两个方法对于确保程序的正确性和性能至关重要。下面,我们将...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是两个非常重要的概念,尤其是在对象比较和数据结构(如哈希表)中。`equals()` 方法用于判断两个对象是否相等,而 `hashCode()` 方法则与对象的哈希值有关,这...
对于Java开发者来说,能够熟练地掌握JSON的解析方法是非常重要的。 #### 方法一:使用`org.json`库解析JSON 在这个方法中,我们使用了`org.json`库中的`JSONObject`和`JSONArray`类来解析JSON字符串。下面通过一个...
### Java StAX解析XML详解 #### 一、简介与背景 在Java开发中,XML是一种常用的数据交换格式,尤其在处理配置文件或与其他系统进行数据交互时。Java提供了多种解析XML的技术,包括DOM(Document Object Model)、...
Java.lang.String类是Java语言中的一种基本数据类型,该类的定义、字段属性、构造方法、equals方法、hashCode方法、charAt方法、compareTo方法、concat方法、indexOf方法、replace方法、split方法、substring方法、...
深入解析Java对象的equals()和hashCode()的使用 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个。在多数情况下,这两个函数是不用考虑的,直接使用它们...
利用java的反射解析Properties文件转成对象 /** * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws ...
### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见的需求。XML(Extensible Markup Language,可扩展标记语言)作为一种数据存储和传输的标准格式,在不同系统间的数据交换中扮演着...
理解并掌握这些解析方法对于Java开发者来说非常重要,特别是当需要处理XML数据时。无论是在Web服务、配置文件还是数据交换场景中,XML解析都是一个关键的技能。你可以根据实际需求选择适合的解析方式。在实际项目中...
if ( true == value.equals( attributeValue ) ) { curElement = child; count ++; } } if ( 0 == count ) { throw new Exception( "找不到个符合条件的子节点!" ); } else if ( 1 ) { ...
根据给定文件内容,这里涉及的知识点涵盖了Java面试中的多个方面,包括但不限于JDK与JRE的区别、Java基本类型与引用类型中"=="和"equals"方法的区别与实现原理等。下面将详细展开这些知识点。 ### JDK与JRE的区别 ...
4. 可能还包括构造函数、toString()、equals()和hashCode()等常用方法。 生成DAO类的过程中,会包含以下内容: 1. 定义接口,接口中的方法对应于基本的CRUD(Create、Read、Update、Delete)操作,如insert()、...
为了处理XML文档,Java提供了多种解析方法。本文将详细介绍四种经典的Java XML解析技术:DOM、SAX、StAX以及JDOM。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,创建一个树形结构...
下面将详细介绍这四种XML解析方法。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,即DOM树。因此,DOM解析适合小到中型的XML文档,对于大型文档可能会消耗大量内存。以下是一个简单的DOM...