Object类中 hashCode方法的性质 在一次]ava应用中,只要对象比较时所有的信息并没有做 任何的改动,无论该对象的 hash Code方法被调用多少次, 每次返回的散列码都必须是同一个整数值。但在不同的 Java应用中,这个散列码的数值允许不一样。 如果有两个对象通过 equals方法比较返回true,那么分 别调用这两个对象的 hash Code方法返回的散列码数值也 相等。 并不要求当通过 objec类的 equals方法比较结果不相等 时,调用这两个对象的 hash Code方法所得的散列码一定 不一样。但是,Java语言建议在这种情况下,最好赋给不 同的对象以不同的散列码数值,以提高散列表的性能 举例: String Convention java 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 11 Object类中hashCode方法的性质 ◼ 在一次Java应用中,只要对象比较时所有的信息并没有做 任何的改动,无论该对象的hashCode方法被调用多少次, 每次返回的散列码都必须是同一个整数值。但在不同的 Java应用中,这个散列码的数值允许不一样。 ◼ 如果有两个对象通过equals方法比较返回true,那么分 别调用这两个对象的hashCode方法返回的散列码数值也 相等。 ◼ 并不要求当通过Object类的equals方法比较结果不相等 时,调用这两个对象的hashCode方法所得的散列码一定 不一样。但是,Java语言建议在这种情况下,最好赋给不 同的对象以不同的散列码数值,以提高散列表的性能。 ◼ 举例:StringConvention.java
hash Code方法的建议覆盖方式 日Java语言建议直接使用 equals方法中的所有属性。 如果这些属性是基本类型或 equals方法已经转换 成对内容比较的类(如 String类),则取其包装 类或所属类的散列码值,然后将它返回 有多个属性用于 equals方法中,则将这几个属 性包装类或所属类的散列码做异或运 XOR)后返回 ■此外,则要在 hash Code方法中设计特殊的算法 使之返回满足]ava规范的值 ■举例: MyObject Convention, java MyObjectNon Convention java 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 12 hashCode方法的建议覆盖方式 ◼ Java语言建议直接使用equals方法中的所有属性。 ◼ 如果这些属性是基本类型或equals方法已经转换 成对内容比较的类(如String类),则取其包装 类或所属类的散列码值,然后将它返回; ◼ 当有多个属性用于equals方法中,则将这几个属 性包装类或所属类的散列码做异或运算(^ , XOR)后返回。 ◼ 此外,则要在hashCode方法中设计特殊的算法, 使之返回满足Java规范的值。 ◼ 举例: MyObjectConvention.java MyObjectNonConvention.java
Object类中的 toString方法 object类中只提供了该对象的类名、一个 @字符和实例散列码的十六进制表示,通 常这些信息对于用户是远远不够的 可以通过覆盖 tostring方法,在其中提供 些更加友好的信息 举例: MyobjectConvention, java 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 13 Object类中的toString方法 ◼ Object类中只提供了该对象的类名、一个 @字符和实例散列码的十六进制表示,通 常这些信息对于用户是远远不够的。 ◼ 可以通过覆盖toString方法,在其中提供 一些更加友好的信息。 ◼ 举例:MyObjectConvention.java
ava. lang包中的类 与编译运行有关 与包装类有关: 与线程有关(参见第6章): Class Boolean Thread ClassLoader Number ThreadGroup Compile Byte ThreadLocal Runtime Short Inheritable ThreadLocal Pr rocess RuntimePermission Long 与异常有关(参见5.3小节): Security manager Float Throwable Double 常用封装类 Stack TraceElement Character Obiect Character. Subset System 与数学运算有关: Character UnicodeBlock Pack Void Math String Strict math StringBuffer 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 14 java.lang包中的类
java. lang包中定义的接口 Charsequence Cloneable a Comparable Runnable 2021/2/20 ava面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 15 java.lang包中定义的接口 ◼ CharSequence ◼ Cloneable ◼ Comparable ◼ Runnable