`

java基础_Object

    博客分类:
  • java
 
阅读更多

java.lang.Object

  java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。

  Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。

  Object类是Java中唯一没有父类的类。

  其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。

 

Object类中的方法

  构造方法:public Object()

  文档中的类概览:

2013-1-3 星期四 10-50-53

 

  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

    `api_object.zip_API_java_lipsziy` 这个压缩包包含了对 `Object` 类中一些基础但至关重要的方法的实现示例,如 `toString()` 和 `equals()`,这些方法经常在实际编程中被重写以满足特定需求。 首先,我们来看 `...

    an_introduction_to_object-oriented_programming_with_java

    这本书《an_introduction_to_object-oriented_programming_with_java》非常适合作为学习Java面向对象编程的入门书籍。它由C.Thomas Wu编写,是面向对象编程教学的一个非常受欢迎的资源。书中内容全面,覆盖了面向...

    JAVA_完完全全的中文版Java API_Sun公司官方出版

    其中,java.lang包是所有Java程序的基础,包含了如String、Integer、Object等基本类型和类。java.io包提供了输入输出操作的支持,如FileInputStream、FileOutputStream等。java.util包则包含了集合框架、日期时间、...

    day07-code_java基础_

    这个名为"day07-code_java基础_"的压缩包文件显然包含了一系列针对初学者的Java基础教程,其中可能涵盖了从基本语法到核心概念的各种主题。下面我们将详细探讨Java基础的一些关键知识点。 首先,Java的基础部分通常...

    active_java_object_oriented_programming_for_the_world_wide_web

    ### Active Java对象导向编程在万维网中的应用 #### 一、引言 随着互联网技术的飞速...通过本书的学习,你不仅能够掌握Java编程的基础知识,还能深入了解其在网络应用开发中的应用,从而成为一名合格的Java程序员。

    Java_page_object_maven_testNG:Java_page_object_maven_testNG

    Java_page_object_maven_testNG是一个基于Java的自动化测试框架,主要使用了Page Object Model(页面对象模型)、Maven构建工具以及TestNG测试框架。这个项目旨在帮助开发者理解如何在自动化测试中有效地应用这些...

    Java__接口、内部类和Java_API基础

    Java API基础包括java.lang包中的基础类库,例如Object类、Math数学类、Comparable可比较接口、基本数据类型的包装类、String字符串类、Class类操作类和System系统类等。这些类库提供了Java语言的基础功能和工具。 ...

    动力节点_Java基础视频教程51_Object方法介绍

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础...适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴,配套资料下载:http://www.bjpowernode.com/?csdn

    javaftp.zip_Java CORBA_ftp java_ftp user.c_java ftp_javascript

    Java提供`java.net.Socket`和`java.io`等基础类库来创建连接和处理I/O流,同时`java.net.FTPSClient`和`java.net.FTPClient`类库可以方便地进行FTP操作,如登录、上传、下载、删除文件等。 2. **Java CORBA**:...

    0100_java_web_class1.rar_JAVA WEB基础_JS_DOM_DEMO03.HTML_javaweb

    在进入Java Web开发的世界之前,理解基础至关重要。本资料包"0100_java_web_class1.rar"聚焦于JAVA WEB基础,特别强调JS DOM操作及其DEMO03的应用,为初学者提供了丰富的学习资源。首先,让我们逐一解析这些关键概念...

    Java API 中文版 Java_Help_CHS.chm

    1. **基础类库**:这是Java API的基础,包括集合框架(如ArrayList、HashMap等)、IO流、线程管理、异常处理等。这些类库使得开发者能够处理输入输出、数据存储、多线程并发以及错误处理等问题。 2. **网络编程**:...

    JAVA_WEB_PPT.rar_java ppt_java web_java web ppt_java.ppt

    同时,ORM(Object-Relational Mapping)框架如Hibernate和MyBatis可以将Java对象映射到数据库表,简化了数据库操作。 **七、Web容器** Tomcat是最常用的Java Web应用服务器,它实现了Servlet和JSP规范,为Java ...

    java 1.8.0_152源代码

    例如,java.lang.* 包含了所有Java程序的基础类,如Object、String、Math等;java.util.* 提供了各种实用工具类,如ArrayList、HashMap等;而java.io.* 和 java.nio.* 则分别涉及传统I/O和NIO(非阻塞I/O)。 5. **...

    java_snmp_connector.rar_ java snmp_Eclipse_java sn_java snmp_mib

    而"网管底层SNMP接口"可能是项目提供的核心接口实现,包含了一系列处理SNMP报文的类和方法,比如PDU(Protocol Data Unit)的解析和构建,这是SNMP通信的基础,PDU包含了SNMP请求或响应的具体信息。 使用Java SNMP ...

    Java程序设计:020611_Object类.ppt

    在Java编程语言中,Object类是一个非常基础且重要的类,它是所有类的终极父类。这意味着,无论我们自定义的类是否显式声明了继承,它们实际上都是Object类的间接子类。`Java程序设计:020611_Object类.ppt`这个资料...

    XML.rar_XML java_java call_java xml_xml 读写_xml读写 java

    在Java中,处理XML主要通过DOM(Document Object Model)和SAX(Simple API for XML)两种解析器。DOM将整个XML文档加载到内存中形成一棵树形结构,便于遍历和操作,但内存消耗较大,适合小型XML文档。SAX则采用事件...

    传智播客_Java培训_毕向东_Java基础源代码_day01

    1. **Java基础语法**:Java程序的基本结构包括类(class)、方法(method)和对象(object)。每个Java程序都至少包含一个公共类,且必须有一个main方法作为程序的入口点。 2. **数据类型**:Java分为两种数据类型...

Global site tag (gtag.js) - Google Analytics