当对象转化为字符串时,即用字符串的形式表示对象时(注意不是把它转型成String类),系统会先自动调用此对象的String toString()函数。缺省的String toString()函数会用“包名+类名+@+hash code”的字符串来代表调用它的对象。所以,设hC是一个对象的话,象这样的动作:String s=""+hC; System.out.println(hC); 系统都会自动先调用hC的String toString()函数,后再调用hC的int hashCode()函数,因为要获取hC的hash code 它的String toString()函数里面会调用hC的int hashCode()函数。即缺省的String toString()函数会调用hC的int hashCode()函数。若复写了String toString()函数,当对象转化为字符串时,就不一定会调用int hashCode()函数了。
(七),boolean equals(Object obj)函数的介绍
boolean equals(Object obj)函数存在每一个类中,它表示调用此函数的对象与传入的对象obj做比较,若返回true(就说这两个对象相等,事实上除了它本身没有一个对象和它真正相等)则容器就把这两个对象当作同一元素对待。若返回false,则容器就认为这两个对象是两个不同的元素。在缺省的状态下,boolean equals(Object obj)函数除了把调用它的对象作为参数输入会返回true,否则使用其他对象作为参数都会返回false。
(八),HashSet加入对象