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() 方法即可,此处不再演示。
ICP备案:
公安联网备案: