Java中的Object类(附带实例)
Object 是 Java 所有类的祖先,所有类都直接或者间接继承该类。
Java 程序中,如果在类的声明中未使用 extends 关键字指明其父类,则默认父类为 java.lang.Object 类。
举个简单的例子:
Object 类中声明了一个无参的构造方法。Object 类中的功能(属性、方法)具有通用性。Object 没有属性,方法如下表所示:
Object可以接收任何类型作为其参数。示例代码如下:
Object 类中 equals() 的定义如下:
通常情况下,我们自定义的类如果使用 equals() 的话,主要是比较两个对象的"实体内容"是否相同。那么,我们就需要对 Object 类中的 equals() 进行重写。重写的原则:比较两个对象的实体内容是否相同。
【实例】重写 equals() 方法,判断两个对象的内容是否相等。
【实例】toString 方法的使用。
Object 类的 toString() 默认返回对象的编码,但是 String 类覆写了 toString() 方法,所以输出的是字符串的的内容。如果想要输出自己类的内容,重写 toString() 方法即可,此处不再演示。
Java 程序中,如果在类的声明中未使用 extends 关键字指明其父类,则默认父类为 java.lang.Object 类。
举个简单的例子:
pulic class Person{ ... }等价于:
public class Person extends Object{ ... }
Object 类中声明了一个无参的构造方法。Object 类中的功能(属性、方法)具有通用性。Object 没有属性,方法如下表所示:
方法 | 功能描述 |
---|---|
public Boolean equals(Object obj) | 比较两个变量指向的是否是同一对象,是则返回true |
public final Class getClass() | 获取当前对象所属类的信息,返回Class对象 |
public String toString() | 将调用该方法的对象转换成字符串 |
protected Object clone() | 生成当前对象的一个副本并返回 |
public int hashCode() | 返回该对象的散列码值 |
public final void notify() | 唤醒在此对象监视器上等待的单个线程 |
pPublic final void notifyAll() | 唤醒在此对象监视器上等待的所有线程 |
public final void wait() | 导致当前线程等待 |
protected void finalize() | 当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用该方法 |
Object可以接收任何类型作为其参数。示例代码如下:
void method(object obj){ //可以接收任何类型作为实参 ... } Person p = new Person(); method(p);
Java Object类主要方法
1) equals()方法
equals() 方法是 Object 类中的一个方法,而非运算符,所以只要声明了一个类就可以调用 equals()。但只能适用于引用数据类型。Object 类中 equals() 的定义如下:
public boolean equals(Object obj) { return (this == obj); }可以看出 Object 类中定义的 equals() 和 == 的作用是相同的,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。
通常情况下,我们自定义的类如果使用 equals() 的话,主要是比较两个对象的"实体内容"是否相同。那么,我们就需要对 Object 类中的 equals() 进行重写。重写的原则:比较两个对象的实体内容是否相同。
【实例】重写 equals() 方法,判断两个对象的内容是否相等。
public class User { String name; int age; public User(String name, int age) { this.name = name; this.age = age; } public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof User) { User u = (User) obj; return this.age == u.age && this.name.equals(u.name); } return false; } public static void main(String[] args) { User u1 = new User("zhangsan", 20); User u2 = new User("lisi", 21); User u3 = new User("zhangsan", 20); System.out.println("u1 和 u2 内容相同 ?" + u1.equals(u2)); System.out.println("u1 和 u3 内容相同 ?" + u1.equals(u3)); } }程序执行结果为:
u1 和 u2 内容相同 ?false
u1 和 u3 内容相同 ?true
2) toString()方法
toString() 方法返回对象的描述信息,即对象的类名和对象地址引用。【实例】toString 方法的使用。
public class ToStringDemo { public static void main(String[] args) { Person p = new Person(); String s = "java"; System.out.println(p); System.out.println(p.toString()); System.out.println(s); System.out.println(s.toString()); } } class Person { }程序执行结果为:
Person@6ff3c5b5
Person@6ff3c5b5
java
java
Object 类的 toString() 默认返回对象的编码,但是 String 类覆写了 toString() 方法,所以输出的是字符串的的内容。如果想要输出自己类的内容,重写 toString() 方法即可,此处不再演示。