• java中==和equals的区别


    一:在搞明白==和equals之前我们要搞明白一件事情,就是java中内存分类?

      java中内存可以简单的分类为栈内存和堆内存(ps:笔主只是简单的分类,便于笔主这种入门级程序员理解,如果想细分jvm内存可以查阅相关资料)

      栈内存:存放基本数据类型和引用变量,类似这种 int a = 1; String str = "aa";这种你创建的变量只涉及栈内存的空间,不会涉及堆内存。

      堆内存:存放对象,类似这种 Person  p = new Person(); 这种你创建的对象涉及两块内存,栈内存存放person实例的首地址,堆内存存放真正的对象内容

    二:然后我们在来看==和equals

      ==比较栈内存的内容,所以比较基本数据类型和字符串我们都用它

      equals比较堆内存存放的内容,因为对象涉及两块内存,我们平时项目中都是比较对象的每一个属性是否相等,如果一样我们就认为它相等,而equals就是比较堆内存的,所以我们比较对象用equals

    三:equals的延伸

      笔主看过equals方法的源码,定义在Object对象中,如下

    看到没有是“==“,也就说jdk带的equals方法只适合比较基本数据类型和字符串

    当我们比较对象的时候必须重写Object的equals,既然重写的equals方法,那么hashCode()方法很有必要重写(具体为什么,我之前看过一个博文说重写了equals方法就必须重写hashCode()方法,有兴趣的朋友可以研究下,评论给我。)

        

      

  • 相关阅读:
    arcgis server 中Web墨卡托投影与WGS-84坐标的转换
    jQuery的鼠标事件总结
    Aps.net中基于bootstrapt图片上传插件的应用
    动态添加div及对应的js、css文件
    jQuery时间格式插件-moment.js的使用
    arcgis地图服务之 identify 服务
    ASP.NET导出word实例
    ArcGIS字段计算器分割字段中的字符串
    正则表达式中的特殊字符
    arcgis for js开发之路径分析
  • 原文地址:https://www.cnblogs.com/crelle/p/10301688.html
Copyright © 2020-2023  润新知