对象传递中的引用传递问题 equals 、 hashCode

对象传递中的引用传递问题

参考mercReBilling 重新开票方法

equals == hashCode

    public static void main(String[] args) {
        // Object类 是对象最顶层的,使用 == 对比的是地址值
        // 使用equals没被重写对比的也是地址值,使用hashCode() 获取的是哈希值,自然也不一样。
        // 如果自己创建的对象重写过了这两个方法,可能对比的就是具体的内容了。
        Object a = new Object();
        Object b = new Object();
        System.out.println(a.equals(b)); // false
        System.out.println(a == b); // false
        System.out.println(a.hashCode() == b.hashCode()); // false

        // 对象传递,传递的是地址值引用,所以结果都是true
        Object c = a;
        System.out.println(a.equals(c)); // true
        System.out.println(a == c); // true
        System.out.println(a.hashCode() == c.hashCode()); // true
        
        System.out.println("===================================");
        // Double 重写了equals和hashCode方法,对比的是具体的内容,所以结果都是true; == 对比的是地址值
        Double d1 = 1.0;
//        Double d2 = new Double(1.0);
        Double d2 = 1.0;
        System.out.println(d1.equals(d2)); // true
        System.out.println(d1 == d2); // false
        System.out.println(d1.hashCode() == d2.hashCode()); // true
        System.out.println("===================================");
//        
        Double d4 = d2;
        System.out.println(d2.equals(d4));  // true
        System.out.println(d2 == d4); // true
        System.out.println(d2.hashCode() == d4.hashCode()); // true
        System.out.println("===================================");
        
        // Integer 不一样,-128~127有常量池,所以结果都是true; == 对比的是地址值相同
        Integer i1 = 1;
        Integer i2 = 1;
        Integer i3 = new Integer(1);
        System.out.println(i1.equals(i2)); // true
        System.out.println(i1 == i2); // true
        System.out.println(i1.hashCode() == i2.hashCode()); // true
        System.out.println("===================================");
        System.out.println(i1.equals(i3)); // true
        System.out.println(i1 == i3); // false
        System.out.println(i1.hashCode() == i3.hashCode()); // true
    }

多线程的执行job

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值