首页 > 编程语言 > 详细

Java-Object类详解

时间:2021-09-06 07:50:04      阅读:11      评论:0      收藏:0      [点我收藏+]

Object类详解

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

==equals

==是一个比较运算符

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

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

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

技术分享图片


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

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

技术分享图片


【==与equals 例题】

例题①

技术分享图片

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;
}

例题②

技术分享图片


例题③

技术分享图片
第三和第六做错
第三做错原因:字符本质上就是一个数字,只是用来对应哪个字符,这里它就是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类详解

原文:https://www.cnblogs.com/ffforward/p/15221400.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!