黑马程序员技术交流社区

标题: hashCode() [打印本页]

作者: 黑夜里的白猫    时间: 2013-10-14 23:44
标题: hashCode()
class Demo4
{
        public static void main(String[] args)
        {
                System.out.println(new Person());

                Person p = new Person();
            System.out.println(p.getClass().getName()+'@'+Integer.toHexString(hashCode()));//这里说hashCode()无法从静态上下文中引用非静态hashCode()
                System.out.println(p);
        }
}
class Person
{
}



作者: bird_not_fat    时间: 2013-10-15 00:01
System.out.println(p.getClass().getName()+'@'+Integer.toHexString(hashCode()));
改成
System.out.println(p.getClass().getName()+'@'+Integer.toHexString(p.hashCode()));
hashCode()方法需要调用者...亲应该是这样
作者: 终结者    时间: 2013-10-15 00:15
每个方法都是继承object类的hashCode方法是object类中的方法,子类要么去继承要么去重写该方法,上面的代码hashCode方法没有对象去调用
作者: 做只会飞的鱼    时间: 2013-10-15 00:41
静态方法在类一加载的时候就加载,直接从类名调用.
而hashCode()方式是实例方法,需要在对象创建以后由对象调用.

作者: 赖龙威    时间: 2013-10-15 10:56
hashCode()不是静态方法。而你的main函数是静态方法。静态方法不能直接调用非静态方法。
你想,静态方法是可以在对象出现前调用的,而非静态方法不可以。所以……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2