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的实例化对象。
分享到:
相关推荐
// 获取字段值,objectInstance是类实例 for (String item : list) { System.out.println("列表元素:" + item); } ``` 4. **注意事项**: - 使用反射操作时,要注意安全性和性能问题,因为反射会降低程序的...
所有的Java对象都有一个继承自`java.lang.Object`类的`getClass`方法。这个方法可以返回当前对象所属类的`Class`对象。 ```java Date date1 = new Date(); Date date2 = new Date(); Class<?> c1 = date1....
- **Class**: 每个类都有一个与之对应的`Class`对象,它是反射的基础。 - **Constructor**: 用于创建类的新实例。 - **Field**: 表示类的成员变量。 - **Method**: 表示类的方法。 #### 三、反射操作父类的属性 ...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部结构,包括类的属性、方法以及构造器。本文将深入探讨如何使用反射来获取父类中的所有属性和方法,这对于理解和调试...
在这个实例中,我们将深入探讨Java中的面向对象特性,包括封装、继承和多态。 1. 封装:封装是面向对象编程的基础,它将数据和操作数据的方法绑定在一起,形成一个独立的单元——类。在Java中,我们通过访问修饰符...
在Java编程语言中,面向对象(Object-Oriented Programming,OOP)是一种核心特性,它使得代码更加结构化,易于理解和维护。在这个“java-面向对象的英雄类”主题中,我们将深入探讨Java中的面向对象编程,特别是...
Java中的Class对象是Java反射机制的核心,它代表了运行时的类信息。通过Class对象,我们可以在程序运行期间动态地获取类的各种属性、方法和构造器等信息,甚至可以实例化对象,使得Java具备了高度的灵活性和动态性。...
在Java编程语言中,动态地使用字符串来实例化类并调用其方法是一种高级特性,主要依赖于`java.lang.Class`类和`java.lang.reflect`包中的反射机制。这一技术在许多场景下都非常有用,例如在插件架构、动态加载类、...
在这个“java了解面向对象与类 详解 java实例20”的主题中,我们将深入探讨面向对象编程的基本概念,以及如何在Java中实现这些概念。 首先,我们需要理解什么是面向对象编程(Object-Oriented Programming,OOP)。...
`Class`类实例通常代表了一个正在运行的Java应用程序中的类或者接口。需要注意的是,在这里,“Class”是一个类,而“class”是一个关键字。每个Java类在运行时都会有一个对应的`Class`对象存在于JVM中,可以通过...
- **对象**:对象是类的实例,具有类所定义的属性和行为。创建对象使用`new`关键字,如`new 类的名称()`。 4. **类的定义和对象的创建** - **类定义**:在Java中,类定义包括成员变量(数据)和方法(操作)。...
对象(Object)是类的实例(Instance),是具有具体状态和行为的实体。当我们根据类创建一个对象时,这个对象就拥有了类中定义的所有属性和方法。通过对象,我们可以实现数据的封装和信息的隐藏,这是因为对象可以将...
Object类是所有Java类的顶级父类,无论是自定义的类还是Java API中的任何类,它们最终都会直接或间接地继承自Object类。因此,每个Java类至少拥有Object类提供的方法。Object类中包含了一些基本的方法,比如: 1. `...
Class类是Java中最基本的类,它是所有类的父类。Class类的对象可以洞悉到它所对应的目标类或目标对象里面的所有内容,比如说方法、成员变量。一个Class对象对应的是一个类的信息。可以通过以下三种方式获取某个类或...
面向对象设计(Object-Oriented Design,简称OOD)在Java编程中占据了核心地位。以下是一些初级实例,帮助理解Java中的面向对象设计。 1. 类与对象:在Java中,类是创建对象的蓝图。通过定义类,我们可以描述对象的...
2. 对象:对象是类的实例,它是实际存在的数据结构。我们可以创建`Person`类的对象并赋值,如: ```java Person p = new Person(); p.name = "张三"; p.age = 30; p.introduce(); ``` 3. 继承:继承允许一个...
创建对象的过程称为实例化,这意味着从类模板中创建一个对象实例。 封装是面向对象编程的一个核心概念,它涉及到将数据(或状态)和操作数据的代码绑定到一起的过程,并通过定义接口隐藏对象的内部细节。这样,对象...
在Java 8中,虽然没有引入重大的反射新特性,但原有的反射API仍然提供了丰富的功能,使得开发者能够在运行时动态地获取类的信息、创建对象、调用方法以及访问和修改字段。以下将详细介绍Java反射的8个关键实例。 1....
在Java中,一个类可以实现多个接口,但只能继承一个父类(除了Object类,它是所有类的最终父类)。 继承是类之间的“is-a”关系,允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以重写父类的方法,以...