单根继承结构中的所有对象都具有一个共用接口,保证所有对象都具备某些功能,单根继承结构和在堆上创建所有对 象极大地简化了参数传递,也是垃圾回收器的实现变得容易很多,垃圾回收器可以给所有对象发送恰当的消息。
public native int hashCode();
返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable
提供的哈希表。
hashCode
的常规协定是:
- 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode
方法时,必须一致地返回相同的整数,前提是对象上
equals
比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
- 如果根据 equals(Object)
方法,两个对象是相等的,那么在两个对象中的每个对象上调用
hashCode
方法都必须生成相同的整数结果。
- 以下情况不
是必需的:如果根据
equals(java.lang.Object)
方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode
方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object
类定义的 hashCode
方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM
编程语言不需要这种实现技巧。)
public boolean equals(Object obj) {
return (this == obj);
}
指示某个其他对象是否与此对象“相等”。
equals
方法在非空对象引用上实现相等关系:
- 自反性
:对于任何非空引用值
x
,x.equals(x)
都应返回
true
。
- 对称性
:对于任何非空引用值
x
和 y
,当且仅当
y.equals(x)
返回 true
时,x.equals(y)
才应返回
true
。
- 传递性
:对于任何非空引用值
x
、y
和 z
,如果
x.equals(y)
返回 true
,并且 y.equals(z)
返回
true
,那么 x.equals(z)
应返回 true
。
- 一致性
:对于任何非空引用值
x
和 y
,多次调用
x.equals(y)
始终返回 true
或始终返回 false
,前提是对象上
equals
比较中所用的信息没有被修改。
- 对于任何非空引用值
x
,x.equals(null)
都应返回
false
。
Object
类的 equals
方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值
x
和 y
,当且仅当 x
和 y
引用同一个对象时,此方法才返回 true
(x == y
具有值 true
)。
注意:当此方法被重写时,通常有必要重写 hashCode
方法,以维护 hashCode
方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
protected native Object clone() throws CloneNotSupportedException;
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
分享到:
相关推荐
【Object-C】ios苹果app开发入门object-c例子demo14个实例 一般编程问题 【实例简介】 ios苹果app开发入门,object-c,例子,demo,14个实例 初学者难得的学习实例 【实例截图】 【核心代码】 归档 ├── Air...
Object Pascal是一种高级编译语言,以严格的强类型特性著称,这意味着在Object Pascal中,数据类型会被严格检查。这种语言支持结构化编程和面向对象编程,其代码具备很好的易读性,并且编译速度快。由于支持使用多个...
在Delphi编程环境中,SuperObject是一个非常流行的JSON库,它为开发者提供了高效、灵活的JSON解析和序列化功能。在Delphi XE10.3版本中,SuperObject的兼容性和支持是至关重要的,因为JSON作为一种轻量级的数据交换...
### Object标签遮罩问题解析及解决方案 #### 一、Object标签概述 在Web开发中,`<object>` 标签是一种非常重要的元素,主要用于在HTML文档中嵌入多媒体内容,如图像、音频、视频、Java Applets、ActiveX 控件、PDF...
为了解决这些问题,开发者们引入了第三方数据库,ObjectBox便是其中的一款优秀选择。ObjectBox是一款专门为移动设备优化的关系型数据库,它以其高性能、易用性以及对对象持久化的支持而受到广泛欢迎。 ObjectBox的...
Delphi 7 JSON SuperObject 深度解析 在 Delphi 开发环境中,处理 JSON 数据是一项常见的任务。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读易写、机器易于解析和生成的特点,被广泛...
在Java编程语言中,`Object`类是所有类的根,每个自定义类如果没有明确指定父类,都默认继承自`Object`。因此,对`Object`类的理解是每个Java开发者的基本功。本文将深入探讨`Object`类,以及其核心方法`equals()`与...
《Visual Object Net++:探索Petri网建模与仿真》 Visual Object Net++是一款专为初学者设计的模拟软件,其主要功能在于提供一个友好的环境来构建和分析Petri网模型。Petri网,全称是Place/Transition Net,是一种...
在IT行业中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。SuperObject是一个开源的、高性能的JSON库,专门为Delphi和FreePascal设计。...
**Delphi 7 版本 - X-SuperObject** X-SuperObject 是一个在 Delphi 开发环境中广泛使用的 JSON 库,特别适用于 Delphi 7 这样的较早版本。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其...
《LWM2M中的Object与Resource定义:深入理解物联网平台对接》 在物联网(IoT)领域, Lightweight Machine to Machine (LWM2M) 协议作为一种轻量级的通信协议,广泛应用于设备管理和服务提供。它允许远程访问和管理...
在本文中,我们将深入探讨如何使用C#编程语言与Esri的MapObject库结合,来构建一个GIS(地理信息系统)程序。MapObject是Esri公司提供的一个强大的地图开发组件,它允许开发者创建交互式地图应用,支持多种地理数据...
在网页开发过程中,我们经常会遇到各种布局问题,其中之一就是`<Object>`标签遮盖`<div>`标签的情况。`<Object>`标签在HTML中用于嵌入外部资源,如Flash、PDF或其他插件,而`<div>`标签则常用于创建页面上的容器或...
MapObject是ESRI公司开发的一款GIS(地理信息系统)组件,它为开发者提供了在应用程序中集成地图和地理数据的能力。基于MapObject的GIS程序设计主要涉及以下几个核心知识点: 1. **地图对象模型**:MapObject的核心...
《SuperObject在Delphi中的应用与详解》 在Delphi编程环境中,SuperObject是一个非常重要的JSON解析库,它以其高效、轻量级和易于使用的特性,深受开发者的喜爱。本文将深入探讨SuperObject的核心概念、使用方法...
C#实现object与byte[]互转 在C#中,实现object与byte[]互转是一种常见的需求,特别是在网络通信和数据存储中。这篇文章将详细介绍如何将object转换为byte[],并介绍相关的知识点。 序列化 序列化是将对象转换为二...
SuperObject是一个轻量级且高效的JSON库,为Delphi开发者提供了方便的接口来解析和生成JSON对象。本篇文章将深入探讨如何在Delphi中使用SuperObject库进行JSON操作。 首先,要使用SuperObject,你需要在项目中引入...
### LDAP提示Object Class Violation详解 #### 一、问题背景 在LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)的使用过程中,有时会遇到一个常见的错误提示:“object class violation”。这一...
在 DELPHI 开发中,SuperObject 是一个非常流行的库,用于处理 JSON 数据。这个库提供了强大而灵活的 API,使得解析、创建和操作 JSON 对象变得轻而易举。在本文中,我们将深入探讨如何使用 SuperObject 实现 JSON ...
**标题:“ObjectBrowser10中文版”** **描述解析:** `SI Object Browser`是一款专为Oracle应用开发和数据库管理设计的图形用户界面(GUI)工具。它集成了多种功能,方便开发者和DBA进行高效的工作。通过GUI,...