编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

Object类

在JDK中提供了一个Object类,它是所有类的父类,即每个类都直接或间接继承自该类。先来看一个例子。

//定义Animal 类
class Animal {
    // 定义动物叫的方法
    void shout() {
        System.out.println("动物叫!");
    }
}
// 定义测试类
public class Example {
    public static void main(String[] args) {
        Animal animal = new Animal(); // 创建Animal 类对象
        System.out.println(animal.toString()); // 调用toString()方法并打印
    }
}

运行结果:

Animal@15db9742

在例中,第13行代码调用了Animal对象的toString()方法,虽然Animal类并没有定义这个方法,但程序并没有报错。这是因为Animal默认继承自Object类,在Object类中定义了toString()方法,在该方法中输出了对象的基本信息。

Object类的toString()方法中的代码具体如下:

getClass().getName()+"@"+Integer.toHexString(hashCode());

为了方便初学者理解上面的代码,接下来分别对其中用到的方法进行解释,具体如下:

  • getClass().getName()代表返回对象所属类的类名,即Animal。

  • hashCode()代表返回该对象的哈希值。

  • Integer.toHexString(hashCode())代表将对象的哈希值用16进制表示。

其中,hashCode()是Object类中定义的一个方法,这个方法将对象的内存地址进行哈希运算,返回一个int类型的哈希值。

在实际开发中,通常希望对象的toString()方法返回的不仅仅是基本信息,而是一些特有的信息,这时重写Object的toString()方法便可以实现。

//定义Animal 类
class Animal {
    // 重写Object 类的toString()方法
    public String toString() {
        return "I am an animal";
    }
}
// 定义测试类
public class Example {
    public static void main(String[] args) {
        Animal animal = new Animal(); // 创建Animal 对象
        System.out.println(animal.toString()); // 打印animal 的toString()方法的返回值
    }
}

运行结果:

I am an animal

在例子的Animal类中重写了Object类的toString()方法,当在main()方法中调用toString()方法时,就打印出了Animal类的描述信息“Iamananimal”。


未经允许不得转载: 技术文章 » Java编程 » Object类