java基础-Object类中常用的几个方法

java基础-Object类中常用的几个方法

java语言是一门面向对象的语言,它的核心思想便是:万物皆对象。而Object作为所有类的基类,定义了一些共性的方法。

因为目前市面上使用最多的版本是JDK 8.0 ,故本文使用的源码和API都是java 8.0的。

01 toString

public String toString()
返回该对象的字符串表示。 返回一个用于描述该对象的字符串。

源码:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

从上面Object的源码可以看出,toString()方法默认返回的格式为:类名+ @ + 哈希值,如: [email protected] 。默认的这种返回形式对用户来说是无意义的,因此,我们每一个类一般都会重写它的toString方法,用来返回其成员变量的值。在很多公司的代码规范中,如华为军规,每一个数据类都必须重写toString()方法。

02 equals

public boolean equals(Object obj)
用于比较两个对象的内存地址,判断两个对象是否为同一个对象。

源码:

    public boolean equals(Object obj) {
        return (this == obj);
    }

源码中默认比较的是两个对象的内存地址,而我们使用对象时并不想比较他们的内存地址,而是想知道他们的内容或者ID是否一致,故经常我们会重写对象的equals方法。

	@Override
	public boolean equals(Object obj) { 
		Person p  = (Person)obj;
		return this.id== p.id;
	}

03 hashCode

public int hashCode()
返回该对象的哈希码值

源码:

public native int hashCode();

一般我们重写了一个类的equals方法,我们都会重写它的hashCode方法。

@Override
public int hashCode() {
	return  this.id;
}

一直想把java的知识点、API、基本类的源码好好看一遍,但因为各种各样的原因没有跟上,所以以后还是尽可能每天更新一点java的知识点,java知识点目录请戳编程-java基础目录