Java-Object类详解

Object类详解

查看JDK源码,可以鼠标指着然后ctrl + 左键

==equals

==是一个比较运算符

  1. ==:既可以判断基本类型,又可以判断引用类型

  2. ==:如果判断基本类型,判断的是值是否相等

  3. ==:如果判断引用类型,判断的是地址是否相等,即判断是不是同一个对象

Java-Object类详解


equals是Object类中的方法,只能判断引用类型

  1. 默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等,比如Integer,String【看String和Integer的equals源代码】

Java-Object类详解


【==与equals 例题】

例题①

Java-Object类详解

public boolean equals(Object obj){
	if(this == obj){ //两个是同一个对象,==比较引用类型的时候是比较地址
		return true;
	}
	if(obj instanceof Person){ //该对象是Person才进行比较
		Person p = (Person)obj; //向下转型,需要获取obj的各个属性
		return this.name.equals(obj.name) && this.age == p.age && this.gender == p.gender;
	}
	return false;
}

例题②

Java-Object类详解


例题③

Java-Object类详解
第三和第六做错
第三做错原因:字符本质上就是一个数字,只是用来对应哪个字符,这里它就是12
第六做错原因:没有分析,以为是false;实际前面是一个字符串,后面是另外类的对象,它们类型不同,无法比较


【hashCode方法】

返回该对象的哈希码值(十进制)

韩老师的6个小结:
(1)提高具有哈希结构的容器的效率
(2)两个引用,如果指向的是同一个对象,则哈希值肯定是一样的
(3)两个引用,如果指向的是不同对象,则哈希值是不一样的
(4)哈希值主要根据地址号来的!不能完全将哈希值等价于地址。
(5)后面在集合中,hashCode如果需要的话,也会重写


【toString方法】

返回该对象的字符串表示,该字符串默认为该对象的 全类名 + @ + 哈希值的十六进制

全类名 = 包名 + 类名

源码:

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

重写toString方法,一般默认是输出对象的属性
在IDEA钟使用快捷键 alt + insert

当直接输出一个对象时,toString方法会被默认的调用,比如System.out.println(monster);就会默认调用monster.toString()

Java-Object类详解

上一篇:C语言 define 定义函数 - C语言零基础入门教程


下一篇:mysql Access denied for user \'root\'@\'localhost\系列问题的解决方法