当前位置 博文首页 > 文章内容

    Java面试题--equals()和==详解!

    作者:Raymond13 栏目:最新资讯 时间:2020-05-19 9:27:07

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    Java基础

    1.和equals的区别是什么?

         == 是关系运算符,equals() 是方法,结果都返回布尔值

         Object 的 == 和 equals() 比较的都是地址,作用相同

    == 作用:

         基本类型,比较值是否相等

         引用类型,比较内存地址值是否相等

         不能比较没有父子关系的两个对象

    equals()方法的作用:

         JDK 中的类一般已经重写了 equals(),比较的是内容

         自定义类如果没有重写 equals(),将调用父类(默认 Object 类)的 equals() 方法,Object 的 equals() 比较使用了 this == obj

         可以按照需求逻辑,重写对象的 equals() 方法(重写 equals 方法,一般须重写 hashCode 方法)

    2.基本类型和包装类对象使用 == 和 equals进行比较的结果?

         值不同,使用== 和equals()比较都返回false

         值相同:

         使用==比较:

         基本类型—基本类型、基本类型—包装对象返回true

         包装对象—包装对象返回false

         缓存中取的包装对象比较返回true (原因是 JVM 缓存部分基本类型常用的包装类对象,如 Integer -128 ~ 127 是被缓存的)


         Integer i1 = 100;

         Integer i2 = 100;

         Integer i3 = 200;

         Integer i4 = 200;

             

         System.out.println(i1==i2); //打印true

         System.out.println(i3==i4); //打印false

    使用equals()比较

         包装对象—基本类型返回true

         包装对象—包装对象返回true

         不同类型的对象对比,返回false


         byte b1 = 127;

         Byte b2 = new Byte("127");

         Byte b3 = new Byte("127");

         System.out.println("Byte 基本类型和包装对象使用 == 比较 : " + (b1 == b2));//true

         System.out.println("Byte 基本类型和包装对象使用 equals 比较 : " + b2.equals(b1));//true

         System.out.println("Byte 包装对象和包装对象使用 == 比较 : " + (b2 == b3));//false

         System.out.println("Byte 包装对象和包装对象使用 equals 比较 : " + b2.equals(b3));//true

         System.out.println();



    注:原文链接https://blog.csdn.net/weixin_44143324/article/details/106173626