java.lang包无需手动导入,编译器会在编译时自动引入该包中的内容。
1、 Object类包含基础方法
2、 创建方法
3、 文档中的类概述
4、 Java中每个类都继承自Object类,具备其定义的基本方法。
5、 Object类中的描述为:
6、 此法颇为独特,与众不同。
7、 采用此方法的类需实现java.lang.Cloneable接口,否则将引发CloneNotSupportedException异常。该接口作为标记接口,用于表明对象允许被克隆,若未实现则无法通过clone方法复制实例。
8、 Cloneable接口不含任何方法,实现时只需在类声明中添加implements关键字即可。
9、 该方法采用protected修饰,较为特殊。在重写clone()方法时,需将其声明为public,以便类外部代码能够调用,确保克隆功能正常对外暴露。
10、
11、 ==用于判断两个引用是否指向同一对象。
12、 Object类的equals()方法用于判断调用该方法的引用与传入的引用是否指向同一个对象,即两个引用在内存中的地址是否相同。
13、 Object类的equals()方法用于比较两个对象是否相等。
14、 {
15、 }
16、 Object类的equals方法与==运算符的作用相同。
17、 只有当一个继承自Object类的子类重写了equals()方法,并通过该方法判断两个对象内容是否相等时,才能体现出equals()方法与==运算符之间的本质区别。否则,默认情况下两者均比较对象的引用地址。
18、
19、 equals方法应具备自反性、对称性、传递性、一致性及非空比较特性。
20、 自反性指对于任意非空引用x,调用x.equals(x)必须返回true。
21、 对称性要求:对于任意两个非空引用x和y,当且仅当y.equals(x)为真时,x.equals(y)也为真。
22、 传递性:对于任意非空引用x、y和z,若x与y相等,且y与z相等,则x也必然与z相等。即当x.equals(y)和y.equals(z)均为true时,x.equals(z)也必须为true。
23、 一致性:对于两个非空引用x和y,在未改变其用于比较的字段的前提下,多次调用x.equals(y)应始终返回相同的结果,确保相等判断的稳定性与可预测性。
24、 规定:任何非空引用调用equals方法传入null时,均应返回false。
25、 重写equals方法时必须同时重写hashCode方法,以确保对象在集合中的行为一致。
26、 覆写equals()方法时,必须同时覆写hashCode()方法,两者需保持一致,反之亦然。
27、 该方法返回一个整数形式的哈希码。若两个对象通过equals()方法判定为相等,则它们应具有相同的哈希码值,以确保在哈希表等结构中的正确性与一致性。
28、 Object类的hashCode()方法会为不同对象返回不同的整数,其返回值通常基于对象在内存中的地址生成,因此每个对象的哈希码具有唯一性。
29、 hashCode的通用约定包括:相等对象必须有相同哈希值,哈希值应保持一致且利于散列分布。
30、 在Java程序的一次运行中,若参与equals比较的对象信息未发生变化,则该对象多次调用hashCode方法应始终返回相同的整数值。
31、 每次运行应用时,该值可不同,无需在多次执行间保持一致。
32、 若两个对象通过equals()判定相等,则它们的hashCode()返回值应相同。
33、 3. 当equals()判断两个对象不相等时,并不要求它们的hashCode()必须返回不同值,这是非强制性的规定。
34、 当两个对象通过equals()方法比较返回false时,它们的hashCode可以相同或不同。然而,若能让不相等的对象生成不同的hashCode,有助于提升哈希表的性能,减少冲突,提高查找效率。因此,在重写hashCode方法时应尽量保证这一点。
35、 调用System.out.println()打印引用时,系统会自动调用该引用所指向对象的toString()方法,并输出其返回值。由于Java中所有类都直接或间接继承自Object类,而Object类中定义了toString()方法,因此每个类都具备该方法,无需额外实现即可使用。
36、 Object类中toString()方法的实现方式如下所示:
37、 {
38、 }
评论
更多评论