循序渐进学Java:Object类详解
分类:
文章
•
2024-07-29 09:06:04
目录,更新ing,学习Java的点滴记录
Object类_基本特性
- 附Object类的结构视图
- Object类是Java中所有类的最终祖先,在Java中,每个类都是由它扩展而来的,但是并不需要这样写 class Employee extends Object,因为如果在没有明确指出父类的时候,Object就被认为是这个类的最终父类.
- 在Java中,只有
基本类型
的值不是对象,而所有的数组类型等都扩展于Object类型
Object类_toString()方法
- 作用:用于返回表示对象值的字符串
根据如上源码得知,默认
会返回“类名[email protected]+16 进制的 hashcode”。在打印输出或者
用字符串连接对象时,会自动调用该对象的 toString()方法。
- 绝大多数toString方法都遵循这样的格式:类的名字,随后是一对方括号(或者花括号)括起来的域值,下面是创建了一个Student类,然后使用IDEA默认生成的toString()方法
- 随处可见toString()方法的主要原因是:只要对象与一个字符串通过操作符"+"连接起来,Java编译器就会自动调用该对象的toString()方法,以便获得这个对象的字符串描述.
- 因此,
在调用x.toString()的地方都可以用""+x替代
.这条语句将一个空串与x的字符串表示相连接,比起使用toString()的好处是,如果x是基本类型,这条语句也能正常执行
强烈建议为自己编写的每一个类增加toString方法
Object类_equals方法
- “==”代表比较双方是否相同。
如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象
。
- 在Object类中,equals方法将
判断两个对象是否具有相同的引用
.Object 的 equals 方法默认就是比较两个对象的 hashcode
,是同一个对象的引用时返回 true 否则返回 false。但是,我们可以根据我们自己的要求重写 equals 方法。
- Java中规定equals要具有下面的特性
1)自反性:对于任何非空引用x,x.equals(x)应该返回true
2)对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true
3)传递性:对于任何引用x,y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true
4)一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果
5)对于任意非空引用x,x.equals(null)应该返回false
- 如果重新定义equals方法,就必须重新定义hashCode方法,以便用户可以将对象插入到散列表中.
- 重写equals案例
Object类_hashCode方法
- 散列码(hashCode):是由对象导出的一个整数值.散列码是没有规律的.
- 由于hashCode()定义在Object类中,因此每个对象都有一个默认的散列码,其值为对象的存储地址
- 示例

可以注意到,字符串s与t拥有相同的散列码,这是因为字符串的散列码是由内容导出的
,s和t的内容是相同的
但是sb和tb是不同的散列码,因为StringBuffer类中没有定义hashCode方法,它的散列码是由Object类的默认hashCode方法导出的对象存储地址.
Object类_getClass方法
- 返回包含对象信息的类对象.
- 示例