java.lang.Object
java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
Object类中的方法
构造方法:public Object()
文档中的类概览:
Java中的每个类都具有定义在Object类中的这些方法。
protected Object clone()
Creates and returns a copy of this object.
Object类中的说明是:
protected Object clone()
throws CloneNotSupportedException
这个方法比较特殊:
首先,使用这个方法的类必须实现java.lang.Cloneable接口,否则会抛出CloneNotSupportedException异常。
Cloneable接口中不包含任何方法,所以实现它时只要在类声明中加上implements语句即可。
第二个比较特殊的地方在于这个方法是protected修饰的,覆写clone()方法的时候需要写成public,才能让类外部的代码调用。
boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.
“==”运算符判断两个引用是否指向同一个对象。
对于Object类的equals()方法来说,它判断调用equals()方法的引用于传进来的引用是否一致,即这两个引用是否指向的是同一个对象。
Object类中的equals()方法如下:
public boolean equals(Object obj) { return (this == obj); }
即Object类中的equals()方法等价于==。
只有当继承Object的类覆写(override)了equals()方法之后,继承类实现了用equals()方法比较两个对象是否相等,才可以说equals()方法与==的不同。
equals()方法需要具有如下特点:
自反性(reflexive):任何非空引用x,x.equals(x)返回为true。
对称性(symmetric):任何非空引用x和y,x.equals(y)返回true当且仅当y.equals(x)返回true。
传递性(transitive):任何非空引用x和y,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)返回true。
一致性(consistent):两个非空引用x和y,x.equals(y)的多次调用应该保持一致的结果,(前提条件是在多次比较之间没有修改x和y用于比较的相关信息)。
约定:对于任何非空引用x,x.equals(null)应该返回为false。
并且覆写equals()方法时,应该同时覆写hashCode()方法,反之亦然。
int hashCode()
Returns a hash code value for the object.
当你覆写(override)了equals()方法之后,必须也覆写hashCode()方法,反之亦然。
这个方法返回一个整型值(hash code value),如果两个对象被equals()方法判断为相等,那么它们就应该拥有同样的hash code。
Object类的hashCode()方法为不同的对象返回不同的值,Object类的hashCode值表示的是对象的地址。
hashCode的一般性契约(需要满足的条件)如下:
1.在Java应用的一次执行过程中,如果对象用于equals比较的信息没有被修改,那么同一个对象多次调用hashCode()方法应该返回同一个整型值。
应用的多次执行中,这个值不需要保持一致,即每次执行都是保持着各自不同的值。
2.如果equals()判断两个对象相等,那么它们的hashCode()方法应该返回同样的值。
3.并没有强制要求如果equals()判断两个对象不相等,那么它们的hashCode()方法就应该返回不同的值。
即,两个对象用equals()方法比较返回false,它们的hashCode可以相同也可以不同。但是,应该意识到,为两个不相等的对象产生两个不同的hashCode可以改善哈希表的性能。
String toString()
Returns a string representation of the object.
当打印引用,如调用System.out.println()时,会自动调用对象的toString()方法,打印出引用所指的对象的toString()方法的返回值,因为每个类都直接或间接地继承自Object,因此每个类都有toString()方法。
Object类中的toString()方法定义如下:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
相关推荐
`api_object.zip_API_java_lipsziy` 这个压缩包包含了对 `Object` 类中一些基础但至关重要的方法的实现示例,如 `toString()` 和 `equals()`,这些方法经常在实际编程中被重写以满足特定需求。 首先,我们来看 `...
这本书《an_introduction_to_object-oriented_programming_with_java》非常适合作为学习Java面向对象编程的入门书籍。它由C.Thomas Wu编写,是面向对象编程教学的一个非常受欢迎的资源。书中内容全面,覆盖了面向...
其中,java.lang包是所有Java程序的基础,包含了如String、Integer、Object等基本类型和类。java.io包提供了输入输出操作的支持,如FileInputStream、FileOutputStream等。java.util包则包含了集合框架、日期时间、...
这个名为"day07-code_java基础_"的压缩包文件显然包含了一系列针对初学者的Java基础教程,其中可能涵盖了从基本语法到核心概念的各种主题。下面我们将详细探讨Java基础的一些关键知识点。 首先,Java的基础部分通常...
### Active Java对象导向编程在万维网中的应用 #### 一、引言 随着互联网技术的飞速...通过本书的学习,你不仅能够掌握Java编程的基础知识,还能深入了解其在网络应用开发中的应用,从而成为一名合格的Java程序员。
Java_page_object_maven_testNG是一个基于Java的自动化测试框架,主要使用了Page Object Model(页面对象模型)、Maven构建工具以及TestNG测试框架。这个项目旨在帮助开发者理解如何在自动化测试中有效地应用这些...
Java API基础包括java.lang包中的基础类库,例如Object类、Math数学类、Comparable可比较接口、基本数据类型的包装类、String字符串类、Class类操作类和System系统类等。这些类库提供了Java语言的基础功能和工具。 ...
动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础...适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴,配套资料下载:http://www.bjpowernode.com/?csdn
Java提供`java.net.Socket`和`java.io`等基础类库来创建连接和处理I/O流,同时`java.net.FTPSClient`和`java.net.FTPClient`类库可以方便地进行FTP操作,如登录、上传、下载、删除文件等。 2. **Java CORBA**:...
在进入Java Web开发的世界之前,理解基础至关重要。本资料包"0100_java_web_class1.rar"聚焦于JAVA WEB基础,特别强调JS DOM操作及其DEMO03的应用,为初学者提供了丰富的学习资源。首先,让我们逐一解析这些关键概念...
1. **基础类库**:这是Java API的基础,包括集合框架(如ArrayList、HashMap等)、IO流、线程管理、异常处理等。这些类库使得开发者能够处理输入输出、数据存储、多线程并发以及错误处理等问题。 2. **网络编程**:...
同时,ORM(Object-Relational Mapping)框架如Hibernate和MyBatis可以将Java对象映射到数据库表,简化了数据库操作。 **七、Web容器** Tomcat是最常用的Java Web应用服务器,它实现了Servlet和JSP规范,为Java ...
例如,java.lang.* 包含了所有Java程序的基础类,如Object、String、Math等;java.util.* 提供了各种实用工具类,如ArrayList、HashMap等;而java.io.* 和 java.nio.* 则分别涉及传统I/O和NIO(非阻塞I/O)。 5. **...
而"网管底层SNMP接口"可能是项目提供的核心接口实现,包含了一系列处理SNMP报文的类和方法,比如PDU(Protocol Data Unit)的解析和构建,这是SNMP通信的基础,PDU包含了SNMP请求或响应的具体信息。 使用Java SNMP ...
在Java编程语言中,Object类是一个非常基础且重要的类,它是所有类的终极父类。这意味着,无论我们自定义的类是否显式声明了继承,它们实际上都是Object类的间接子类。`Java程序设计:020611_Object类.ppt`这个资料...
在Java中,处理XML主要通过DOM(Document Object Model)和SAX(Simple API for XML)两种解析器。DOM将整个XML文档加载到内存中形成一棵树形结构,便于遍历和操作,但内存消耗较大,适合小型XML文档。SAX则采用事件...
1. **Java基础语法**:Java程序的基本结构包括类(class)、方法(method)和对象(object)。每个Java程序都至少包含一个公共类,且必须有一个main方法作为程序的入口点。 2. **数据类型**:Java分为两种数据类型...