`

java中Object是所有类的父类,所有类的对象都是Class的实例

阅读更多
    java中Object是所有类的父类,这句话就不多做解释。但是Object中到底有哪些我们常用的方法呢?
1. public native int hashCode();
    这个方法是一个native方法,也就是说它是用C/C++完成,返回一个int类型的哈希码,这个hashcode用来干什么呢?用来标注这个对象的唯一性。
    这里doc上有两句话这么描述:
    如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
    如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。
    有兴趣的同学可以研究一下hash的问题,如果是计算机专业的应该还记得hash是怎么回事!

2.public boolean equals(Object obj)
    根据上面的一句话我们可以知道这个equals比较的就是hashcode。
    但是String中比较的却是字符串的内容,这是因为String覆写了equals方法。所以String和StringBuffer的equals是不同的。

3. protected native Object clone() throws CloneNotSupportedException;
    clone方法在doc中最值得注意的一句话是;
    首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。
    这句话明确的告诉了我们什么叫做浅表复制,和深层复制。对于一些问题的理解很有帮助。
    这里插入一个创建模式:原型模式
    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
    就是使用clone()方法完成的。

4.public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
    如果没有重写这个方法,那么返回的就是个classname@hashcode的形式。


    其他的就是3个多线程方法和一个protected的finalize()以及一个private的本地registerNatives方法。



    当然还有一个非常重要的方法:public final native Class<?> getClass();
    这个方法就能返回每个对象的Class对象。也就是该类的类对象。通过这个方法我们就能找得到对象的Class对象并且完成反射。
    另外我们还能通过类的全名:Class.forName("jdbc.oracle.OracleDriver")来实例化类的Class对象。
    或者我们使用 类.class也可以获得Class的实例化对象。
3
1
分享到:
评论
8 楼 ewth126 2012-11-20  
ltian 写道
什么叫两个对象相等呢?我想找个问题需要进一步阐述!

这个问题其实可以从内存方向来看,但是需要阐述虚拟机的机制。到时候我再开一片文章吧。前段时间在看其他方面的资料这边就暂时放下了。对不起大家了。
7 楼 corelengine 2012-11-01  
写的不错,好样的
6 楼 ltian 2012-11-01  
什么叫两个对象相等呢?我想找个问题需要进一步阐述!
5 楼 guochao19891 2012-11-01  
alvin198761 写道
guochao19891 写道
对于菜鸟来说受教了

最讨厌打击人的人,有本事你自己写啊

我说我是个菜鸟,我受教了!!!
4 楼 chenzhou123520 2012-11-01  
alvin198761 写道
guochao19891 写道
对于菜鸟来说受教了

最讨厌打击人的人,有本事你自己写啊

估计你理解错了他的意思了吧
3 楼 tao_gun 2012-11-01  
  可以的
2 楼 alvin198761 2012-11-01  
guochao19891 写道
对于菜鸟来说受教了

最讨厌打击人的人,有本事你自己写啊
1 楼 guochao19891 2012-11-01  
对于菜鸟来说受教了

相关推荐

    java反射获取所有属性,获取所有get方法,包括子类父类

    // 获取字段值,objectInstance是类实例 for (String item : list) { System.out.println("列表元素:" + item); } ``` 4. **注意事项**: - 使用反射操作时,要注意安全性和性能问题,因为反射会降低程序的...

    JAVA反射机制-Class类-Class对象的获取.pdf

    所有的Java对象都有一个继承自`java.lang.Object`类的`getClass`方法。这个方法可以返回当前对象所属类的`Class`对象。 ```java Date date1 = new Date(); Date date2 = new Date(); Class&lt;?&gt; c1 = date1....

    java反射操作父类所有属性和方法

    - **Class**: 每个类都有一个与之对应的`Class`对象,它是反射的基础。 - **Constructor**: 用于创建类的新实例。 - **Field**: 表示类的成员变量。 - **Method**: 表示类的方法。 #### 三、反射操作父类的属性 ...

    用反射的方式获取父类中的所有属性和方法

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部结构,包括类的属性、方法以及构造器。本文将深入探讨如何使用反射来获取父类中的所有属性和方法,这对于理解和调试...

    java面向对象程序设计实例

    在这个实例中,我们将深入探讨Java中的面向对象特性,包括封装、继承和多态。 1. 封装:封装是面向对象编程的基础,它将数据和操作数据的方法绑定在一起,形成一个独立的单元——类。在Java中,我们通过访问修饰符...

    java-面向对象的英雄类

    在Java编程语言中,面向对象(Object-Oriented Programming,OOP)是一种核心特性,它使得代码更加结构化,易于理解和维护。在这个“java-面向对象的英雄类”主题中,我们将深入探讨Java中的面向对象编程,特别是...

    Java中Class对象详解共2页.pdf.zip

    Java中的Class对象是Java反射机制的核心,它代表了运行时的类信息。通过Class对象,我们可以在程序运行期间动态地获取类的各种属性、方法和构造器等信息,甚至可以实例化对象,使得Java具备了高度的灵活性和动态性。...

    Java中如何使用字符串来实例化类以及调用类

    在Java编程语言中,动态地使用字符串来实例化类并调用其方法是一种高级特性,主要依赖于`java.lang.Class`类和`java.lang.reflect`包中的反射机制。这一技术在许多场景下都非常有用,例如在插件架构、动态加载类、...

    java了解面向对象与类 详解 java实例20

    在这个“java了解面向对象与类 详解 java实例20”的主题中,我们将深入探讨面向对象编程的基本概念,以及如何在Java中实现这些概念。 首先,我们需要理解什么是面向对象编程(Object-Oriented Programming,OOP)。...

    java中的Class类和反射.docx

    `Class`类实例通常代表了一个正在运行的Java应用程序中的类或者接口。需要注意的是,在这里,“Class”是一个类,而“class”是一个关键字。每个Java类在运行时都会有一个对应的`Class`对象存在于JVM中,可以通过...

    java编程中的类和对象的详细介绍

    - **对象**:对象是类的实例,具有类所定义的属性和行为。创建对象使用`new`关键字,如`new 类的名称()`。 4. **类的定义和对象的创建** - **类定义**:在Java中,类定义包括成员变量(数据)和方法(操作)。...

    java面向对象、类与对象的定义笔记

    对象(Object)是类的实例(Instance),是具有具体状态和行为的实体。当我们根据类创建一个对象时,这个对象就拥有了类中定义的所有属性和方法。通过对象,我们可以实现数据的封装和信息的隐藏,这是因为对象可以将...

    JAVA入门-Object类、Class类

    Object类是所有Java类的顶级父类,无论是自定义的类还是Java API中的任何类,它们最终都会直接或间接地继承自Object类。因此,每个Java类至少拥有Object类提供的方法。Object类中包含了一些基本的方法,比如: 1. `...

    JavaSE062Class类、Method类及Field类的使用方式深度探析.doc

    Class类是Java中最基本的类,它是所有类的父类。Class类的对象可以洞悉到它所对应的目标类或目标对象里面的所有内容,比如说方法、成员变量。一个Class对象对应的是一个类的信息。可以通过以下三种方式获取某个类或...

    Java面向对象设计的一些初级实例

    面向对象设计(Object-Oriented Design,简称OOD)在Java编程中占据了核心地位。以下是一些初级实例,帮助理解Java中的面向对象设计。 1. 类与对象:在Java中,类是创建对象的蓝图。通过定义类,我们可以描述对象的...

    Java 面向对象 程序设计基础实例

    2. 对象:对象是类的实例,它是实际存在的数据结构。我们可以创建`Person`类的对象并赋值,如: ```java Person p = new Person(); p.name = "张三"; p.age = 30; p.introduce(); ``` 3. 继承:继承允许一个...

    an_introduction_to_object-oriented_programming_with_java

    创建对象的过程称为实例化,这意味着从类模板中创建一个对象实例。 封装是面向对象编程的一个核心概念,它涉及到将数据(或状态)和操作数据的代码绑定到一起的过程,并通过定义接口隐藏对象的内部细节。这样,对象...

    Java 8个反射实例

    在Java 8中,虽然没有引入重大的反射新特性,但原有的反射API仍然提供了丰富的功能,使得开发者能够在运行时动态地获取类的信息、创建对象、调用方法以及访问和修改字段。以下将详细介绍Java反射的8个关键实例。 1....

    类、抽象类、接口、继承和对象(java).doc

    在Java中,一个类可以实现多个接口,但只能继承一个父类(除了Object类,它是所有类的最终父类)。 继承是类之间的“is-a”关系,允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以重写父类的方法,以...

Global site tag (gtag.js) - Google Analytics