哈希值 - 重写

package cn.itcast.day12.demo02;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName Demo04.java
 * @Description TODO
 * @createTime 2021年09月24日 18:25:00
 */


/**
 * hashCode方法的源码
 * public native int hashCode();
 * native代表该方法调用的是本地操作系统的方法
 */
public class Demo04 extends Object {
    public static void main(String[] args) {
        /**
         * 这个Person类一开始是直接new的 哈希值输出打印为460141958
         * 后面为了试验重写 new了一个Person类 继承Object类 重写了hashcode方法中的返回值 为1
         */
        Person person = new Person();
        int i = person.hashCode();
        System.out.println("i = " + i);//i = 460141958

        Person person1 = new Person();
        int i1 = person1.hashCode();
        System.out.println("i1 = " + i1);//i1 = 1163157884

        /**
         * toString方法的源码
         *   public String toString() {
         *         return getClass().getName() + "@" + Integer.toHexString(hashCode());
         *     }
         */
        System.out.println("person = " + person);//person = cn.itcast.day11.demo01.Person@1b6d3586
        System.out.println("person1 = " + person1);//person1 = cn.itcast.day11.demo01.Person@4554617c
        System.out.println(person == person1);//false

        /**
         * String类的哈希值
         * String类重写Object类的hashcode方法
         *
         * 重写:重新是子类和父类之间 子类重写父类的方法
         *
         */
        String s1 = "sadfas";
        String s2 = "sadfas";
        System.out.print(s1.hashCode() + "  ");//这两个hashcode值是一样的-909953150  -909953150
        System.out.println(s2.hashCode());

        /**
         * 这两个字符串比较特殊 字符串不一样但是哈希值是一样的
         * 1179395
         * 1179395
         * 这就是哈希值 一个十进制的整数
         */
        System.out.println("重地".hashCode());
        System.out.println("通话".hashCode());


    }
}

Person类

package cn.itcast.day12.demo02;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName Demo05.java
 * @Description TODO
 * @createTime 2021年09月24日 18:55:00
 */

public class Person extends Object{
    @Override
    public int hashCode() {
        return 1;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙趣生花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值