【重磅推荐】Java两个值比较【== 和 equals】的区别【8中基本数据类型的封装类型对比】总结

 整型的对比:
java中整数的相等比较_★夏夜微凉★的博客-CSDN博客

/**
         * 特殊说明:
         *  0、Java【==符号 ->必须内存地址和值都相等】和【equals方法->只要值相等即可】对比
         *  1、【完全支持==对比】Java语言支持的8种基本数据类型:byte,short,int,long,float,double,char 和 boolean
         *  2、8种基本类型的对象封装类型,和基本类型对比时,会自动调用匹配的拆箱方法成基本类型,然后对比,结果为true!
         *  3、基本数据类型的封装对象类型,部分类型有缓存【缓存范围之内的值可以使用==对比】
         *      Boolean:(全部缓存)
         *      Byte:(全部缓存)
         *      Character(<= 127缓存)
         *      Integer(-128 — 127缓存)
         *      Short(-128 — 127缓存)
         *      Long(-128 — 127缓存)
         *   4、String类型没有拆箱方法,为此常量字符串和new String的地址不一样【==对比为false】
         * 总结:
         *      基于基本数据类型的封装对象类型对比,如果仅考虑值是否相等【务必使用equals方法对比】要判断内存地址是否相等才使用【==对比】
         *
         */

        System.out.println("Java【==符号 ->必须内存地址和值都相等】和【equals方法->只要值相等即可】对比:");


        int i = 127;
        Integer i1 = i;
        Integer i2 = i;
        Integer integer1 = new Integer(i);
        Integer integer2 = new Integer(i);
        System.out.println("【基于==符号对比】Integer 对比 int【Integer类型会自动调用intValue()方法拆箱为int类型再对比】为true->" + (integer1 == i));
        System.out.println("【基于==符号对比】new Integer 对比 int【Integer类型会自动调用intValue()方法拆箱为int类型再对比】为true->" + (integer1 == i));
        System.out.println("【基于==符号对比】两个Integer值对比【[-128-127]闭合区间自动存入缓存基于==对比为true】->" + (i1 == i2));
        System.out.println("【基于==符号对比】Integer和new Integer对比【两个内存地址,对比结果为false】->" + (i1 == integer1));
        System.out.println("【基于==符号对比】两个new Integer对象对比,地址肯定不一样【==】为false ->" + (integer1 == integer2));
        System.out.println("【基于equals方法对比】仅对比值肯定为true ->" + (integer1.equals(integer2)));


        float f = 1.1f;
        Float f1 = f;
        Float f2 = f;
        Float f_float1 = new Float(f);
        Float f_float2 = new Float(f);
        System.out.println("【基于==符号对比】Float 对比 float【Float类型会自动调用floatValue()方法拆箱为int类型再对比】为true->" + (f_float1 == f));
        System.out.println("【基于==符号对比】new Float 对比 float【Float类型会自动调用floatValue()方法拆箱为int类型再对比】为true->" + (f_float1 == f));
        System.out.println("【基于==符号对比】两个Float值对比【没有缓存==对比为false】->" + (f1 == f2));
        System.out.println("【基于==符号对比】Float和new Float对比【两个内存地址,对比结果为false】->" + (f1 == f_float1));
        System.out.println("【基于==符号对比】两个new Float对象对比,地址肯定不一样【==】为false ->" + (f_float1 == f_float2));
        System.out.println("【基于equals方法对比】仅对比值肯定为true ->" + (f_float1.equals(f_float2)));

        String s = "hello";
        String s1 = s;
        String string1 = new String(s);
        String string2 = new String(s);
        System.out.println("【基于==符号对比】两个String值对比【常量字符串对比结果为true】->" + (s == s1));
        System.out.println("【基于==符号对比】一个常量String和new String对象对比【String没有拆箱方法,对比结果为false】 ->" + (s1 == string2));
        System.out.println("【基于==符号对比】两个new String对象对比,地址肯定不一样【==】为false ->" + (string1 == string2));
        System.out.println("【基于equals方法对比】仅对比值肯定为true ->" + (f_float1.equals(f_float2)));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值